今天进行jni开发进行so文件的编译碰到一些错误现在记录如下,供战友们参考避免范重复错误。
编译命令范例:
g++ -fPIC -shared -I /usr/lib/jvm/jdk1.7.0/include/ -I /usr/lib/jvm/jdk1.7.0/include/linux/ -o libhelloworld.so -cpp HelloWorld.cpp
1. 如果少了 -share 提示
cannot dynamically load executable
2. 如果少了 -c或者-cpp或提示
only ET_DYN and ET_EXEC can be loaded
3. -fPIC是产生位置无关代码,就是可以不固定的内存位置执行代码(就是可以动态链接的意思了),动态链接库必须添加。