Gcc 手动链接和执行,无需其他选择
我使用的Gcc 手动链接和执行,无需其他选择,gcc,linker,ld,Gcc,Linker,Ld,我使用的gcc比任何其他编译器都多,因此我将用这个编译器套件来塑造我的示例,但我在尝试的几乎所有套件中都遇到过这个问题,比如gcc、mingw、clang和msvc gcc提供以下标志: -l您编写名称foo,gcc将找到一个名为libfoo -L附加libs所在的路径,gcc尝试将所需库与在该路径中找到的库进行匹配 -rpath基本上是同一个lib的不同路径池,因此可执行文件足够“智能”,可以在需要时寻找替代方案 这个问题对我来说是个大问题,没有人能解决我的问题,而且每个标志都面临着同样的
gcc
比任何其他编译器都多,因此我将用这个编译器套件来塑造我的示例,但我在尝试的几乎所有套件中都遇到过这个问题,比如gcc
、mingw
、clang
和msvc
gcc
提供以下标志:
您编写名称-l
,gcc将找到一个名为foo
libfoo
附加libs所在的路径,gcc尝试将所需库与在该路径中找到的库进行匹配-L
基本上是同一个lib的不同路径池,因此可执行文件足够“智能”,可以在需要时寻找替代方案-rpath
- 仅链接1个特定库,并且仅链接我使用精确名称和路径指定的1
- 避免使用类似于
名称上的自动完成机制,因为我的lib被命名为-l
而不是foo.so
libfoo.so
- 链接库的相对路径
谢谢。最简单的方法就是指定库
gcc-o test test.o/path/my_library.so/path/to_other_library.a
这种方法的明显缺点是,如果您移动了库,那么您的应用程序将不再工作,但是由于您声明在固定位置有库,所以在您的情况下它应该工作 我已经在gcc上发现了这一点,即使这种方法存在您所描述的缺点,我认为至少它给了我机会指定正确的库来使用,我认为像gcc这样的编译器,拥有多年的经验,并且在几乎所有主要平台上都进行了良好的调优,可以提供更好的链接器。