abi*_*gli 5 linker gcc g++ libraries
我很想知道在以下两种方式指定库(共享和静态)与gcc/g ++之间是否存在任何实质性差异(CC可以是g ++或gcc)
CC -o output_executable /path/to/my/libstatic.a /path/to/my/libshared.so source1.cpp source2.cpp ... sourceN.cpp
Run Code Online (Sandbox Code Playgroud)
VS
CC -o output_executable -L/path/to/my/libs -lstatic -lshared source1.cpp source2.cpp ... sourceN.cpp
Run Code Online (Sandbox Code Playgroud)
我只能看到一个主要的区别是,直接传递完全指定的库名称将有助于更好地控制选择静态或动态版本,但我怀疑还有其他事情会对可执行文件的构建方式产生副作用或我会在运行时表现,对吗?
安德烈.
好的,我可以根据一些实验和更深入的gcc文档阅读来回答:
来自gcc文档:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
[...]链接器通过扫描存档文件来处理存档文件,以查找已定义但尚未定义的符号的成员.但是,如果找到的文件是普通的目标文件,则以通常的方式链接.使用-l选项和指定文件名之间的唯一区别是-l使用
lib' and.a' 包围库并搜索多个目录
这实际上也回答了关于在gcc命令行上直接指定目标文件的第3个选项的相关疑问(即,在这种情况下,目标文件中的所有代码将成为最终可执行文件的一部分,同时使用存档,只有目标文件真正需要的将被拉入).
| 归档时间: |
|
| 查看次数: |
7262 次 |
| 最近记录: |