用多了IDE,有时候总是会忘记编译的命令,特此记录下来
gcc
gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lword
-I 是头文件目录
-L 是.c/.cpp/.so等目录
-l 是库名,上面的lword对应libword.so,表示在lib目录下寻找libword.so文件(如果gcc编译选项加入了-static,表示寻找libword.a静态库文件,程序链接的库名是word)
此外
-Wl,-rpath=.
-Wl 表示增加选项,-rpath 表示执行程序在.(当前目录)下寻找链接库
编译so
gcc -fPIC -shared ll.c -o libll.so
g++编译
g++ test.cpp
C++和C混合编程
当混合编程需要g++使用c编译的so,由于managling的存在,需要额外处理。
将头文件中的声明函数外加extern "C"
extern "C" void print();
如果函数很多的时候,使用 extern “C” { }