今天尝试make一下遇到了莫名其妙出现的.o文件,居然不是空的?【有趣的发现】,让我一直失败的代码是LIBS = -L../common -lmyLib
我的myLib.a文件确实不是libmyLib.a
而是myLib.a
因为这个myLib某种程度上是这个项目的命名要求,如果前面再加一个lib就太难看了,所以我不想加
我就问ChatGPT,如果我的库不是以lib开头呢?
GPT告诉我,代码不用动
可是ld: library 'myLib' not found
就摆在那里啊
改了半天突发奇想,我同时还有一个myLib.o
,如果我用LIBS = -L../common -lmyLib.o
会不会可以呢
然后就成了。
我都不知道为什么。
所以正确的做法其实是,如果你用.a
,可以加个小小的冒号,
i.e. LIBS = -L../common -l:myLib.a
不对等等什么情况?
gcc -o template template.c initShader.o -L../common -l:myLib.a -framework GLUT -framework OpenGL -D GL_SILENCE_DEPRECATION
ld: library ':myLib.a' not found
问一问Claude:
我理解你遇到了这个错误。这个问题通常出现在 macOS 系统上,因为 macOS 的链接器 (ld) 对
-l:
选项的处理方式与标准 GNU 链接器略有不同。让我们来解决这个问题。
- 直接指定库文件的完整路径
- 使用
-force_load
选项(macOS 特有)
…
好的,作为Mac用户,要学会自适应。还是重命名为libmyGLS.a
吧
听起来也挺酷的。
(GLS = GL Support)
ir, culu ; )