Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 ld can';在arch linux上构建时,找不到与python模块相关的函数_Python 2.7_Cmake_Archlinux - Fatal编程技术网

Python 2.7 ld can';在arch linux上构建时,找不到与python模块相关的函数

Python 2.7 ld can';在arch linux上构建时,找不到与python模块相关的函数,python-2.7,cmake,archlinux,Python 2.7,Cmake,Archlinux,我正在尝试构建项目(cmake build分支),它使用python2.7并使用cmake作为构建系统 对于基于debian的发行版,一切正常。但是对于arch linux,所有代码都编译得很好,但是当涉及到链接时,问题就出现了 [ 35%] Linking CXX executable goblin-camp /usr/bin/ld: CMakeFiles/goblin-camp.dir/Goblin_Camp/src/scripting/Engine.cpp.o: in function `

我正在尝试构建项目(
cmake build
分支),它使用
python2.7
并使用
cmake
作为构建系统

对于基于debian的发行版,一切正常。但是对于arch linux,所有代码都编译得很好,但是当涉及到链接时,问题就出现了

[ 35%] Linking CXX executable goblin-camp
/usr/bin/ld: CMakeFiles/goblin-camp.dir/Goblin_Camp/src/scripting/Engine.cpp.o: in function `Script::Init(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)':
Engine.cpp:(.text+0x310): undefined reference to `inittime'
/usr/bin/ld: Engine.cpp:(.text+0x315): undefined reference to `init_functools'
/usr/bin/ld: Engine.cpp:(.text+0x31a): undefined reference to `initcStringIO'
/usr/bin/ld: Engine.cpp:(.text+0x31f): undefined reference to `initzlib'
并将其作为参数添加到
target\u link\u库中

target_link_libraries("goblin-camp"
  python_zlib
  python_datetime
  python__functools
  python_cStringIO
.....

在我看来,我找到了问题的原因。在基于Debain的分发版中,所有二进制python模块都集中在
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
文件中。同时,在Arch Linux中,它们分别在
/usr/lib/python2.7/lib dynload
中构建,cmake和linker找不到它们。解决方案是强制cmake导入每个模块“`add_library(python_zlib SHARED IMPORTED)set_property(TARGET python_zlib property IMPORTED_LOCATION)/usr/lib/python2.7/lib dynload/zlib.so”)``并将其作为参数添加到
TARGET_link_libraries
中,我似乎找到了问题的原因。在基于Debain的分发版中,所有二进制python模块都集中在
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
文件中。同时,在Arch Linux中,它们分别在
/usr/lib/python2.7/lib dynload
中构建,cmake和linker找不到它们。解决方案是强制cmake导入每个模块“`add_library(python_zlib SHARED IMPORTED)set_property(TARGET python_zlib property IMPORTED_LOCATION)/usr/lib/python2.7/lib dynload/zlib.so”)``并将其作为参数添加到
TARGET_link_libraries
target_link_libraries("goblin-camp"
  python_zlib
  python_datetime
  python__functools
  python_cStringIO
.....