作者:朱金灿


       以一个例子来说明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