我们常常需要在不同的环境下编译tensorflow的扩展包,不同的环境下编译选项也不一样,改来改去非常麻烦,这里提供一个通用的编译方式
g++ -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I $(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())') -I /usr/local/cuda/include -I $(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')/external/nsync/public -lcudart -L /usr/local/cuda/lib64/ -L$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())') -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=0
注意在对应的python环境下运行该编译命令。
如果测试时出现undefined symbol的错误,那很有可能是D_GLIBCXX_USE_CXX11_ABI设置错误,将其修改为1,重新编译
参考:PointRCNN中的编译