助推器::P ython 静态联动
Boost::Python static linkage
我需要在我的项目中静态链接-lboost_python。这是我的制作文件:
CC=g++
override CFLAGS+=-c -std=c++11 -Wall -Wextra -Werror
override LFLAGS+=-lboost_python -lpthread -lboost_filesystem -lboost_system -lboost_thread -lcrypto
client: clientmain.o client.o ccommand.o
$(CC) $(LINK) ../build/datatype.o ../build/utility.o build/clientmain.o build/client.o build/ccommand.o -o
build/mylib.so $(LFLAGS)
clientmain.o: main.cpp
$(CC) $(CFLAGS) -fPIC main.cpp -o build/clientmain.o
client.o: cclient.cpp
$(CC) $(CFLAGS) -fPIC cclient.cpp -o build/client.o
ccommand.o: ccommand.cpp
$(CC) $(CFLAGS) -fPIC ccommand.cpp -o build/ccommand.o
当 $(LINK( 是"共享"时,一切正常。但是,当 $(LINK( 是"静态"时,我会收到大量链接器错误"未定义的符号...",所有这些都与 boost::p ython 有关。以下是其中的一些(完整列表在这里发布真的很大(:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::call(boost::python::api::object const&)':
(.text+0x20): undefined reference to `PyList_Type'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::call(boost::python::api::object const&)':
(.text+0x35): undefined reference to `PyObject_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::list_base()':
(.text+0x9a): undefined reference to `PyList_New'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::list_base(boost::python::api::object const&)':
(.text+0x114): undefined reference to `PyList_Type'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::list_base(boost::python::api::object const&)':
(.text+0x119): undefined reference to `PyObject_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::append(boost::python::api::object const&)':
(.text+0x18d): undefined reference to `PyList_Type'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::append(boost::python::api::object const&)':
(.text+0x1d1): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::append(boost::python::api::object const&)':
(.text+0x254): undefined reference to `PyList_Append'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::extend(boost::python::api::object const&)':
(.text+0x320): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::index(boost::python::api::object const&) const':
(.text+0x441): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::index(boost::python::api::object const&) const':
(.text+0x471): undefined reference to `PyLong_AsSsize_t'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::pop()':
(.text+0x5ae): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::pop(long)':
(.text+0x691): undefined reference to `PyLong_FromLong'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::pop(long)':
(.text+0x6eb): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::pop(boost::python::api::object const&)':
(.text+0x845): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::remove(boost::python::api::object const&)':
(.text+0x960): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::reverse()':
(.text+0xa4a): undefined reference to `PyList_Type'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::reverse()':
(.text+0xa8b): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::reverse()':
(.text+0xb11): undefined reference to `PyList_Reverse'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::sort()':
(.text+0xbaa): undefined reference to `PyList_Type'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::sort()':
(.text+0xbeb): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::sort()':
(.text+0xc71): undefined reference to `PyList_Sort'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::sort(boost::python::detail::args_proxy const&, boost::python::detail::kwds_proxy const&)':
(.text+0xd49): undefined reference to `PyObject_Call'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::count(boost::python::api::object const&) const':
(.text+0xef1): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::count(boost::python::api::object const&) const':
(.text+0xf21): undefined reference to `PyLong_AsSsize_t'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::insert(long, boost::python::api::object const&)':
(.text+0x1033): undefined reference to `PyList_Type'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::insert(long, boost::python::api::object const&)':
(.text+0x1072): undefined reference to `PyLong_FromLong'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::insert(long, boost::python::api::object const&)':
(.text+0x1095): undefined reference to `PyEval_CallFunction'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../lib64/libboost_python.a(list.o): In function `boost::python::detail::list_base::insert(long, boost::python::api::object const&)':
(.text+0x1134): undefined reference to `PyList_Insert'
我的生成文件有什么问题?
遗漏的符号肯定来自libpython所以你可能可以尝试添加 -lpython2.7 或任何你想使用的 python 版本。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- #为""定义宏;静态";针对不同的上下文
- cmake如何在fedora工作站中找到boost静态库包
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- cmake在我的项目中所需的所有静态库都不成功
- C++从另一个类访问公共静态向量的正确方法是什么
- 基于boost的程序的静态链接——zlib问题
- 在静态库中嵌入类方法
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 如何在C++中获得"静态纯虚拟"功能?
- 私有类型的静态常量成员
- 使用gcc从静态链接的文件中查找可选符号
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 如何在C++中使用非静态成员函数作为回调函数
- 将静态库链接到不带-fPIC的共享库中
- 静态结构和一个定义规则
- 助推器::P ython 静态联动
- Boost::p ython 静态方法返回类的实例
- boost::p ython 纯虚拟基类,具有静态工厂构造函数和 std::unique_ptr