作者:朱金灿
以一个例子来说明gcc的常用编译参数:
gcc 1.cpp 2.cpp -std=c++11 -fPIC -shared -I/home/jdk1.8.0_144/include -I/home/Qt5.9.4/include -L"../../ThirdPartyLib/boost/lib" -L"../../ThirdPartyLib/ecw/lib" -lboost_system -lboost_thread -lboost_filesystem -lNCSEcw -lm -o libMyJNI.so
gcc 1.cpp 2.cpp // gcc命令后可以带一个或多个要编译的c文件或cpp文件
-fPIC -shared // 要输出的是动态库,如果要编译输出应用程序,使用-fPIE选项
-I/home/jdk1.8.0_144/include //包含的一个头文件路径是/home/jdk1.8.0_144/include,可以带有多个包含头文件路径,可以是绝对路径或相对路径
-L"../../ThirdPartyLib/boost/lib" //包含的库文件路径,可以是绝对路径或相对路径
-lboost_system //链接的库是boost_system,可以带有多个
-lm // 因为数学函数位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。
-o libMyJNI.so // 指定输出的动态库名字叫 libMyJNI.so