我有以下布局:
top_project
+ subproject1
+ subproject2
Run Code Online (Sandbox Code Playgroud)
每个subproject1并subproject2创建一个静态库.我想在这个top_project级别的单个共享库中链接这些静态库.
我到目前为止收集的信息是:
-fPic(除了Windows之外的所有内容)进行编译以创建与位置无关的代码,这将允许将静态库链接到单个共享库或解压缩所有静态库(例如使用ar)并将它们重新链接到共享库(其中我认为这是一个不优雅和不便携的解决方案)add_library命令:由于某些我无法理解的原因,简单地写入add_library(${PROJECT_NAME} SHARED subproject1 subproject2)不能按预期工作(它实际上创建了一个空库并且没有正确地注册依赖项)有什么想法吗?
在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.我究竟做错了什么?