- 运行C文件
需要编译的源程序为:hello.c
生成的可执行文件为:hello
gcc -o hello hello.c
./hello
- 运行C++文件
需要编译的源程序为:hello.cpp
生成的可执行文件为:hello
g++ hello.cpp -o hello
./hello
- 编译成
.o
文件
g++ -c -o name.o name.cpp
- 生成静态链接库
# 生成静态链接库,先生成.o文件
g++ -c -o name.o name.cpp
ar rcs libname.a name.o
# 使用静态链接库
# test 是要生成的可执行程序
# main.cpp 是一个调用了 libname.a 的 cpp 文件
# -L./ 中的 ./ 是 libname.a 的路径
# -lname 中的 name 是库的名字(注意库的名称是 name 不是 libname,其中 lib 是前缀)
g++ -o test mian.cpp -L./ -lname
- 生成动态链接库
# 生成动态链接库
g++ -o name.o -fPIC -c name.cpp
g++ -o libname.so -shared name.o
# 使用动态链接库,这个跟使用静态链接库一样
# 但需要注意的是,动态链接库是运行时动态加载的,因此需要将
# 库文件拷贝到一个位置(一般是 /usr/lib/ 下),不然会报如下错误:
# ./test: error while loading shared libraries: libname.so: cannot open shared object file: No such file or directory
# 也可以不拷到 /usr/lib/ 下,使用如下命令:LD_LIBRARY_PATH=./ ./test
# LD_LIBRARY_PATHD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。./ 是库文件的路径,./test 是可执行文件
g++ -o test mian.cpp -L./ -lname
# 或者先生成 main.o,再使用动态链接库
g++ -o main.o -c -fPIC main.cpp
g++ -o test main.o -L./ -lname