我一直在尝试在Linux中构建自己的插件。我已经构建了一个可以正常工作的插件,但是我想使用libtbb.so插件中的某些功能。
将libtbb.so添加到我的Makefile中之后,我收到错误消息:“错误的ELF类:ELFCLASS64” ,当我尝试加载插件时。我知道它与32位库和64位库在构建期间混合在一起有关。但是,我尝试在32位Ubuntu桌面,64位Ubuntu桌面和64位Debian桌面上构建这两个make文件:
GPP = g++
GCC = gcc
plugin_OUTFILE = "../PathCalculator.so"
COMPILE_FLAGS = -std=c++0x -m64 -O3 -fPIC -c -I ./PathCalculator/cq -w -D LINUX -D PROJECT_NAME=\"PathCalculator\"
plugin = -D plugin $(COMPILE_FLAGS)
all: plugin
clean:
-rm -f *~ *.o *.so
plugin: clean
$(GPP) $(plugin) ./*.cpp
$(GPP) -std=c++0x -m64 -L/usr/lib -ltbb -fshort-wchar -shared -o $(plugin_OUTFILE) *.o
和
GPP = g++
GCC = gcc
plugin_OUTFILE = "../PathCalculator.so"
COMPILE_FLAGS = -std=c++0x -m32 -O3 -fPIC -c -I ./PathCalculator/cq -w -D LINUX -D PROJECT_NAME=\"PathCalculator\"
plugin = -D plugin $(COMPILE_FLAGS)
all: plugin
clean:
-rm -f *~ *.o *.so
plugin: clean
$(GPP) $(plugin) ./*.cpp
$(GPP) -std=c++0x -m32 -L/usr/lib -ltbb -fshort-wchar -shared -o $(plugin_OUTFILE) *.o
在32位Ubuntu桌面版本上,我收到消息:“未定义符号:_ZN3tbb8internal12NFS_AllocateEjjPv” ,所以我不知何故无法获取libtbb.so来正确链接。但是我真的不太了解64位版本是如何工作的。如果没有libtbb.so的包含,那么该插件就可以正常工作。
任何帮助将不胜感激。
跳