【问题标题】:Statically linking libraries in linux [duplicate]在linux中静态链接库[重复]
【发布时间】:2010-10-06 07:00:46
【问题描述】:

我有一个链接到多个库的应用程序,其中大多数在我的机器上既可用作静态库,也可用作动态库。下面是ldd 命令的输出。

linux-gate.so.1 =>  (0xffffe000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0xb782c000)
libc.so.6 => /lib/libc.so.6 (0xb76cc000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb755a000)
/lib/ld-linux.so.2 (0xb788d000)
libdl.so.2 => /lib/libdl.so.2 (0xb7555000)
libz.so.1 => /lib/libz.so.1 (0xb7540000)

我想静态链接 libssl 库,但根据 gcc 文档,默认情况下它会动态链接每个库。告诉 gcc 静态链接特定库的方法是什么,即使它的动态版本在系统上也可用?

【问题讨论】:

标签: c linux gcc


【解决方案1】:

gcc 有一个 -static 标志。

【讨论】:

  • 但它会强制所有库静态链接。我想静态链接一些库,一些动态链接。
  • -static 关键字将强制连接静态链接之后的链接库。对于 -dynamic 标志也是如此。通过这种方式,您可以指定哪些要动态链接,哪些要静态链接。
  • @bad zeppelin:能给我们举个例子吗?
  • gcc a.o b.o ... z.o -Wl,-B,static -lfoo -Wl,-B,dynamic -lbar
  • 如果你想在几年前静态链接一些库和动态链接一些库 - 这只是这种情况的一种解决方案 - 重命名你的静态库....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多