C++ &引用;lib";图书馆的前缀

C++ &引用;lib";图书馆的前缀,c++,c,gcc,naming-conventions,C++,C,Gcc,Naming Conventions,发件人: 注意:库必须以三个字母lib开头,并具有后缀.a 这是一种操作系统惯例,还是一种怪癖?Xcode似乎能够创建没有前缀的库。它有什么不同呢?你可以随意命名一个库,但是如果你想让gcc的-l标志找到正确的库,你需要按照链接描述的方式命名它。例如: gcc -o myapp myapp.c -lm 将编译myapp.c,将结果对象链接到libm.a,并输出名为myapp的可执行文件。现在,可能有一个更复杂的搜索路径涉及动态库名称等,但您应该从这个示例中了解基本概念 从: -l库 。。。使用

发件人:

注意:库必须以三个字母
lib
开头,并具有后缀
.a


这是一种操作系统惯例,还是一种怪癖?Xcode似乎能够创建没有前缀的库。它有什么不同呢?

你可以随意命名一个库,但是如果你想让gcc的
-l
标志找到正确的库,你需要按照链接描述的方式命名它。例如:

gcc -o myapp myapp.c -lm
将编译
myapp.c
,将结果对象链接到
libm.a
,并输出名为
myapp
的可执行文件。现在,可能有一个更复杂的搜索路径涉及动态库名称等,但您应该从这个示例中了解基本概念

从:

-l

。。。使用
lib
.a
包围库,并搜索多个目录


我一直认为这是一种命名约定,编译器工具链不强制执行。可能使用归档的完整路径。lib/.a对流与
-l
标志一起使用,即
-lXXX
查找
libXXX.a
libXXX.so
。那些老unix家伙真的讨厌使用键盘!这是unix风格链接器的一个特性,我从来没有真正看到将其延续到现在的理由。当然,您可以随时提供库的完整路径和名称。@Max-是的,这是可选的。你可以在那里留个地方。但是,当你链接到
libiberty.a
,写
-liberty
…@Carl:特别是,如果你没有像你想的那样自由命名库的话。:)@n、 m.是的,我用过其中一个,实际上是这个,但我仍然认为在这种情况下,他们做得有点太过分了。@n.m.你有300波特?你这个幸运儿,很高兴你没有被110困住!他们不会无缘无故地调用那些端口
tty