【发布时间】:2011-04-05 23:31:32
【问题描述】:
我有一组 cpp 文件,我想直接编译成二进制文件并编译成共享库。
我有
bin_PROGRAMS=mybin
lib_LTLIBRARIES=libmylib.la
COMMON_SOURCES=f1.cpp f2.cpp f3.cpp
mybin_SOURCES=main.cpp $(COMMON_SOURCES)
libmylib_la_SOURCES=$(COMMON_SOURCES)
当我运行它时,cpp 文件被编译两次,一次使用 libtool,一次没有,有时 libtool/automake 会报错
Makefile.am: object `f1.$(OBJEXT)' created both with libtool and without`
我尝试将 COMMON_SOURCES 放入 .a 文件,但当我将 .a 与 .la 链接时 libtool 会抱怨(说它不可移植)。
我需要的是类似的东西
bin_LTPROGRAMS=mybin
但那不存在
编辑:澄清 - 我正在使用 automake/autoconf。我上面展示的是我的 automake Makefile.am
【问题讨论】:
-
我不认为你可以用 libtool 创建共享库。我相信你需要使用编译器。但是你忘记了一些细节。看起来您正在使用某种形式的自动制作等。所以您需要告诉我们您正在使用的确切设置(因为它似乎不是直接制作)。
-
libtool 专门用于制作共享库gnu.org/software/libtool/manual/libtool.html
-
为什么要创建
libmylib.so,而不是将mybin链接到此共享对象,而是静态链接到组成它的源中? -
我希望能够将二进制文件作为独立模块分发。我希望能够对 .so 做同样的事情。老实说,这是有道理的
标签: c++ gcc autoconf automake libtool