我有几个C ++类,我想使用autotools和libtool将它们编译到共享库中。 这些是我的configure.ac和Makefile.am文件:
configure.ac:
AC_PREREQ(2.67) AC_INIT(somelib.so,1.0,someone@somewhere.com) AC_LANG(C++) AM_INIT_AUTomake(somelib,1.0) LT_INIT([disable-static]) AM_disABLE_STATIC AM_PROG_LIBTOOL AC_LIBTOOL_DLOPEN AC_PROG_LIBTOOL AC_CONfig_SRCDIR([Logger.cpp]) AC_CONfig_HEADER([config.h]) # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_SUBST(LIBTOOL_DEPS) AC_LTDL_DLLIB AC_PROG_RANLIB AC_SUBST(LIBTOOL_DEPS) AC_LTDL_DLLIB # Checks for libraries. # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([cstring unistd.h pthread.h]) # Checks for typedefs,structures,and compiler characteristics. AC_HEADER_STDBOOL AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T # Checks for library functions. AC_FUNC_MALLOC AC_FUNC_REALLOC AC_TYPE_SIGNAL AC_CHECK_FUNCS([mkdir strdup dup2]) AC_CHECK_LIB(pthread,pthread_create,[],[ echo "ERROR!: libpthread not found!"; exit -1],[]) AC_CHECK_LIB(xml2,htmlReadMemory,[ echo "ERROR!: libxml2 not found!"; exit -1],[]) AC_CONfig_MACRO_DIR([m4]) AC_OUTPUT(Makefile)
Makefile.am:
AUTomake_OPTIONS = foreign ACLOCAL_AMFLAGS = -I m4 CPPFLAGS = `xml2-config --cflags` -g -fPIC -Wall -O2 AM_LDFLAGS = `xml2-config --libs` -pthread -shared -L$(libdir) -L.libs -lboost_iostreams -lz -lbz2 -L/shared/hudson/arm/lib -I/shared/hudson/arm/include LIBVER=1:0:0 lib_LTLIBRARIES = somelib.la somelib_la_SOURCES = <sources go here> somelib_la_LDFLAGS = -version-info $(LIBVER) library_includedir=$(includedir)/os library_include_HEADERS = <headers go here>
Libtool只创build静态库,尽pipe我调用configure –disable-static –enable-shared来明确地指示脚本创build共享对象。 我的文件有什么问题?
在Linux服务器上更改autoconf版本
kdevelop 3.5:configure:error:C ++编译器不能创build可执行文件
autoconfconfiguration结果在C std lib头相关的编译错误
为什么我无法用autoconf2.6x构buildautoconf,它的版本比2.6更新
Automake – 安装版本“automake-1.14.1”的困难
—编辑—
从libtool链接cmd:
/bin/bash ./libtool --tag=CXX --mode=link arm-cortex_a8-linux-gnueabi-g++ -g -O2 -version-info 1:0:0 -o somelib.la -rpath /usr/local/lib AutoMutex.lo IniParser.lo Logger.lo Mutex.lo ProcInfo.lo Timer.lo XmlDocContainer.lo XmlNode.lo XmlParser.lo XmlSchemaValidator.lo XmlTree.lo ByteArray.lo IXmlEngine.lo LoggerSetup.lo Process.lo Thread.lo Utils.lo XmlError.lo XmlObjectEngine.lo XmlSchemaEngine.lo XmlSimpleEngine.lo Unziper.lo MUTool.lo -lxml2 -lpthread -ldl -ldl libtool: link: arm-cortex_a8-linux-gnueabi-ar cru .libs/somelib.a AutoMutex.o IniParser.o Logger.o Mutex.o ProcInfo.o Timer.o XmlDocContainer.o XmlNode.o XmlParser.o XmlSchemaValidator.o XmlTree.o ByteArray.o IXmlEngine.o LoggerSetup.o Process.o Thread.o Utils.o XmlError.o XmlObjectEngine.o XmlSchemaEngine.o XmlSimpleEngine.o Unziper.o MUTool.o libtool: link: arm-cortex_a8-linux-gnueabi-ranlib .libs/somelib.a libtool: link: ( cd ".libs" && rm -f "somelib.la" && ln -s "../somelib.la" "somelib.la" ) make[1]: Leaving directory `/home/bg/workspace/git/somelib/src'
automake子目录对象被禁用
在Ubuntu 11.04上的autoconf错误
Automake:依赖于构build结果
我可以通过使用AC_XXXX_CONfig语法把我的macros定义到config.h吗?
如何避免重新定义VERSION,PACKAGE等
如果libtool以某种方式相信它在不支持共享库的平台上,它就会忽略你并建立静态库。 我看到你正在交叉编译,也许libtool不知道如何为目标平台建立共享库。
检查是否构建共享库…不
然后阅读config.log来找出原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。