【问题标题】:"lib" Prefix on Libraries库上的“lib”前缀
【发布时间】:2011-06-03 18:33:09
【问题描述】:

来自http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

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

这是操作系统约定,还是gcc/ar 怪癖? Xcode 似乎能够创建没有前缀的库。它有什么不同?

【问题讨论】:

  • 我一直认为这是编译器工具链强制执行的命名约定。
  • 可能使用存档的完整路径。 lib/.a 对流与-l 标志一起使用,即。 -lXXX 查找 libXXX.alibXXX.so

标签: c++ c gcc naming-conventions


【解决方案1】:

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

gcc -o myapp myapp.c -lm

将编译myapp.c,将生成的对象与libm.a 链接,并输出一个名为myapp 的可执行文件。这些天,可能会有更复杂的搜索路径涉及动态库名称等,但您应该从这个例子中得到基本的想法。

来自gcc man page

-l 图书馆 ...

... 用 lib.a 包围 library 并搜索多个目录。

【讨论】:

  • 那些unix老家伙真的讨厌使用键盘!这是 unix 风格的链接器的一个特性,我从来没有真正看到过延续到现在的理由。当然,您可以随时提供库的完整路径和名称。
  • @Max - 是的,它是可选的。你可以在那里放一个空间。但是当你链接到libiberty.a 时,写-liberty 会很有趣...
  • @Carl:特别是,如果您有权随意命名库。 :)
  • @n.m.是的,我用过其中一个,实际上是这个columbia.edu/cu/computinghistory/la36.html,但我仍然认为在这种情况下他们做得有点过火了。
  • @n.m.你有300波特?你这幸运的狗,庆幸你没有被 110 困住!他们不会无缘无故地调用这些端口tty
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多