gcc 静态链接尝试/失败找到 libgcc_s.a

gcc 静态链接尝试/失败找到 libgcc_s.a

我的 C++ 应用程序在默认动态链接下运行良好,但是...我试图将所有库静态链接到应用程序,因为不幸的是用户似乎无法安装适当的库(或者更准确地说,他们的 ISP 不会在正在使用的服务器上安装)。所以我添加了 -static 作为链接选项。LD
尝试打开 libgcc_s.a 失败,这似乎是错误的。 如果我理解正确的话(如果我有错误,请纠正我!),
LD 确实成功打开了 libgcc.a :

  1. libgcc_s 是 libgcc 的共享版本,因此是一个共享对象。
    静态链接的可执行文件应该只使用 libgcc.a,而不是 libgcc_s,对吗?
  2. 除了 -static 之外,我还需要指定哪些链接器参数?它似乎在 .a 风格中找到了所需的一切。

$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4 版权所有 (C) 2013 自由软件基金会,Inc.
$ uname -s -r --m
Linux 3.19.0-51-generic x86_64

在此先感谢您的帮助,此致,戴夫

附言:

g++ -Xlinker -static -o "airparse"  ./src/ArcBuild.o ./src/ParsTool.o ./src/airparse.o ./src/airway.o ./src/coordint.o ./src/mapBuild.o 
./src/mapdata.o ./src/n_assert.o     
/usr/bin/ld: cannot find -lgcc_s  
/usr/bin/ld: cannot find -lgcc_s  
collect2: error: ld returned 1 exit status  
make: *** [airparse] Error 1

答案1

不幸的是,似乎 -static 链接选项gcc(Ubuntu 4.8.4-2ubuntu1~14.04.4)4.8.4坏了。可能是某种规格错误?

无论如何,我通过升级到解决了这个问题gcc(Ubuntu 8.3.0-6ubuntu1)8.3.0并且此版本与 -static AOK 链接。

相关内容