Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gcc 手动链接和执行,无需其他选择_Gcc_Linker_Ld - Fatal编程技术网

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
    您编写名称
    foo
    ,gcc将找到一个名为
    libfoo
  • -L
    附加libs所在的路径,gcc尝试将所需库与在该路径中找到的库进行匹配
  • -rpath
    基本上是同一个lib的不同路径池,因此可执行文件足够“智能”,可以在需要时寻找替代方案
这个问题对我来说是个大问题,没有人能解决我的问题,而且每个标志都面临着同样的问题:模糊性

如果我只想链接一个库,我知道在最好的情况下,如果不包含一定程度的模糊性,就无法做到这一点,那么我想要的是:

  • 仅链接1个特定库,并且仅链接我使用精确名称和路径指定的1
  • 避免使用类似于
    -l
    名称上的自动完成机制,因为我的lib被命名为
    foo.so
    而不是
    libfoo.so
  • 链接库的相对路径
  • 只考虑显式给定的库集,不涉及任何其他类型的自动化,没有LIBS池,没有搜索路径,没有其他任何东西,我更喜欢错误列表,而不是与随机库链接的可执行文件。
我经常在不同的版本中处理不同的lib,出于历史和兼容性的原因,它们通常使用相同的名称。编译和链接gcc是一场噩梦,因为我从未得到我想要链接到可执行文件的lib


谢谢。

最简单的方法就是指定库

gcc-o test test.o/path/my_library.so/path/to_other_library.a


这种方法的明显缺点是,如果您移动了库,那么您的应用程序将不再工作,但是由于您声明在固定位置有库,所以在您的情况下它应该工作

我已经在gcc上发现了这一点,即使这种方法存在您所描述的缺点,我认为至少它给了我机会指定正确的库来使用,我认为像gcc这样的编译器,拥有多年的经验,并且在几乎所有主要平台上都进行了良好的调优,可以提供更好的链接器。