相关疑难解决方法(0)

125
推荐指数
4
解决办法
6万
查看次数

CMake:如何从子项目的所有静态库创建单个共享库?

我有以下布局:

top_project
    + subproject1
    + subproject2
Run Code Online (Sandbox Code Playgroud)

每个subproject1subproject2创建一个静态库.我想在这个top_project级别的单个共享库中链接这些静态库.

我到目前为止收集的信息是:

  • 使用-fPic(除了Windows之外的所有内容)进行编译以创建与位置无关的代码,这将允许将静态库链接到单个共享库或解压缩所有静态库(例如使用ar)并将它们重新链接到共享库(其中我认为这是一个不优雅和不便携的解决方案)
  • 所有源文件必须明确地给出add_library命令:由于某些我无法理解的原因,简单地写入add_library(${PROJECT_NAME} SHARED subproject1 subproject2)不能按预期工作(它实际上创建了一个空库并且没有正确地注册依赖项)
  • 在CMake中有一个OBJECT库功能,但我不认为它的目的是真正做我想要的.

有什么想法吗?

cmake shared-libraries

50
推荐指数
2
解决办法
4万
查看次数

如何在gcc中将静态库链接到动态库中

在gcc(g ++)下,我编译了一个静态.a(调用它some_static_lib.a)库.我想把这个.a文件链接(这是正确的短语?)到libsomeDyn.so我正在构建的另一个动态库(称之为).虽然.so编译,我看.a不到.so使用nm命令的内容:

/ usr/bin/g ++ -fPIC -g -O2 -Wall -Werror -pipe -march = pentium3 -mtune = prescott -MD -D_FILE_OFFSET_BITS = 64 -DLINUX -D_GNU_SOURCE -D_THREAD_SAFE -I ../../../. ./../../../../ -I ../../../../../../../..// libraries -Wl,-rpath,/ usr/lib -o libsomeDyn.so some.o another.o some_static_lib.a -shared -Wl -x -Wl,-soname,libsomeDyn.so

我看不到功能some_static_lib.a不足libsomeDyn.so.我究竟做错了什么?

gcc

35
推荐指数
2
解决办法
5万
查看次数

标签 统计

cmake ×2

gcc ×1

shared ×1

shared-libraries ×1

static ×1