在Python2.7中,未定义的符号导入P4API

2024-09-30 18:22:53 发布

您现在位置:Python中文网/ 问答频道 /正文

在RHEL5(5.3)上,我安装了python27、python27-devel、setuptools、gcc44、gcc44-c++和p4python安装程序。所有安装看起来都很好,没有报告错误。在

但是,当我打开Python2.7并尝试导入P4或P4API时,我收到以下错误:

ImportError: /usr/lib64/python2.7/site-packages/P4API.so: undefined symbol: _ZNSo9_M_insertI1EERSoT_

这看起来像一个损坏的名称,但我不清楚原始名称可能是什么(除了“insert”),或者它可能需要什么库。在

我尝试过用LD_DEBUG=libs运行python,它似乎找到了它要查找的所有库。在

你有没有想过会出什么问题?谷歌今晚帮不了我多少忙。在

提前谢谢!在

更新:

我尝试从源代码构建P4Python,使用P4API的Linux26x86_64版本,但仍然收到相同的错误。在

更新2:

在生成的库上运行ldd P4API.so时,我得到以下结果:

^{pr2}$

这是编译器的输出:

API Release 2012.1
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
copying P4.py -> build/lib.linux-x86_64-2.7
running build_ext
building 'P4API' extension
creating build/temp.linux-x86_64-2.7
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c P4API.cpp -o build/temp.linux-x86_64-2.7/P4API.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c PythonClientAPI.cpp -o build/temp.linux-x86_64-2.7/PythonClientAPI.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c PythonClientUser.cpp -o build/temp.linux-x86_64-2.7/PythonClientUser.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c SpecMgr.cpp -o build/temp.linux-x86_64-2.7/SpecMgr.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c P4Result.cpp -o build/temp.linux-x86_64-2.7/P4Result.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c PythonMergeData.cpp -o build/temp.linux-x86_64-2.7/PythonMergeData.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c P4MapMaker.cpp -o build/temp.linux-x86_64-2.7/P4MapMaker.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c PythonSpecData.cpp -o build/temp.linux-x86_64-2.7/PythonSpecData.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c PythonMessage.cpp -o build/temp.linux-x86_64-2.7/PythonMessage.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
gcc44 -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -I/usr/include/expat2 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DID_OS="LINUX26X86_64" -DID_REL="2012.1" -DID_PATCH="511074" -DID_API="2012.1/442152" -DID_Y="2012" -DID_M="08" -DID_D="15" -I/home/bbbrooks/p4python_test/p4api-2012.1.442152 -I/home/bbbrooks/p4python_test/p4api-2012.1.442152/include/p4 -I/usr/include/python2.7 -c PythonActionMergeData.cpp -o build/temp.linux-x86_64-2.7/PythonActionMergeData.o -DOS_LINUX -DOS_LINUX26 -DOS_LINUXX86_64 -DOS_LINUX26X86_64
c++ -pthread -shared -L/usr/kerberos/lib64 -L/usr/lib64/expat2 build/temp.linux-x86_64-2.7/P4API.o build/temp.linux-x86_64-2.7/PythonClientAPI.o build/temp.linux-x86_64-2.7/PythonClientUser.o build/temp.linux-x86_64-2.7/SpecMgr.o build/temp.linux-x86_64-2.7/P4Result.o build/temp.linux-x86_64-2.7/PythonMergeData.o build/temp.linux-x86_64-2.7/P4MapMaker.o build/temp.linux-x86_64-2.7/PythonSpecData.o build/temp.linux-x86_64-2.7/PythonMessage.o build/temp.linux-x86_64-2.7/PythonActionMergeData.o -L/home/bbbrooks/p4python_test/p4api-2012.1.442152 -L/home/bbbrooks/p4python_test/p4api-2012.1.442152/lib -L/usr/lib64 -lclient -lrpc -lsupp -lp4sslstub -lrt -lpython2.7 -o build/lib.linux-x86_64-2.7/P4API.so

更新3:

我还没有找到解决这个问题的办法,但我找到了一个解决办法,我相信它能缩小问题的范围。在

我安装了python2.6和python26-devel,能够很好地编译和使用P4Python(P4和P4API)。我猜问题的根源在python27-devel的某个地方,但是我对linux开发的了解还不足以确定和修复根本原因。在

我还是想找到一个Python2.7的解决方案,而且我愿意帮助找到一个。在


Tags: testbuildsourcehomeincludelinuxusrtemp
1条回答
网友
1楼 · 发布于 2024-09-30 18:22:53

从错误消息中,我得到的印象是,您的配置使用了一个库,该库要么是用错误的编译器/编译器设置编译的,要么是在错误的系统上编译的。 P4API使用这个库,但也有可能,这个库不是P4API的一部分,因此在您的系统上重新构建P4API时并没有构建它。 你可以检查它所依赖的所有lib并找出可疑的。在

我刚刚在perforce P4Python网站上看了一下,上面写着:

要从源代码构建P4Python,开发机器还必须具有:

  • 2012.2个用于目标平台
  • 的C/C++接口 编译程序,用于在目标平台上构建PrimeC++ C++ API。在
  • (如果生成或运行时出现“未解析符号”错误 P4Python,您可能使用了错误的编译器或错误的性能 API构建。)在

因此,您似乎必须在本地计算机上使用相同的编译器来构建PyPythonp4api。在

相关问题 更多 >