库的链接
1. 制作使用静态库
hello里面调用sub0的函数,将sub0的函数封装成静态库的形式
#include <stdio.h>
#include "sub0.h"
int main(int argc, char** argv) {
if (argc >1) {
printf("hello %s\n", argv[1]);
}
else {
printf("hello dar\n");
}
int a =2, b =1;
printf("sum = %d\n", my_sum(a, b));
return 0;
}
sub0
#include <stdio.h>
int my_sum(const int a, const int b) {
return a +b;
}
sub1
#include <stdio.h>
int my_sub(const int a, const int b) {
return a -b;
}
静态库的使用及链接
dargon@dd:~/桌面/Test$ gcc -c -o hello.o hello.c
dargon@dd:~/桌面/Test$ gcc -c -o sun0.o sub0.c
dargon@dd:~/桌面/Test$ ar crs libsub.a sub0.o # 将sub封装成静态库,可以使用多个.o生成
dargon@dd:~/桌面/Test$ gcc -o hello hello.o libsub.a # 指定一下静态库的路径
dargon@dd:~/桌面/Test$ ./hello
2. 制作使用动态库的链接
dargon@dd:~/桌面/Test$ gcc -c -o hello.o hello.c
dargon@dd:~/桌面/Test$ gcc -c -o sub0.o sub0.c
dargon@dd:~/桌面/Test$ gcc -c -o sub1.o sub1.c
dargon@dd:~/桌面/Test$ ls
hello.c helloworld.cpp mylib sub0.h sub1.c sub1.o
hello.o libsub.so sub0.c sub0.o sub1.h
dargon@dd:~/桌面/Test$ gcc -o hello hello.o -lsub -L /home/dargon/桌面/Test/mylib
dargon@dd:~/桌面/Test$ ls
hello hello.o libsub.so sub0.c sub0.o sub1.h
hello.c helloworld.cpp mylib sub0.h sub1.c sub1.o
dargon@dd:~/桌面/Test$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dargon/桌面/Test/mylib
dargon@dd:~/桌面/Test$ ./hello
hello dar
sum = 3
sub = 1
先运行
argon@dd:~/桌面/Test$ gcc -c -o hello.o hello.c
dargon@dd:~/桌面/Test$ gcc -c -o sub0.o sub0.c
dargon@dd:~/桌面/Test$ gcc -c -o sub1.o sub1.c # 生成.o目标文件
dargon@dd:~/桌面/Test$ ls
hello.c helloworld.cpp sub0.c sub0.o sub1.h
hello.o mylib sub0.h sub1.c sub1.o
dargon@dd:~/桌面/Test$ gcc -shared -o libsub.so sub0.o sub1.o # 生成共享库文件 libsub.o
dargon@dd:~/桌面/Test$ ls
hello.c helloworld.cpp mylib sub0.h sub1.c sub1.o
hello.o libsub.so sub0.c sub0.o sub1.h
设置
argon@dd:~/桌面/Test$ gcc -o hello hello.o -lsub -L /home/dargon/桌面/Test/mylib
dargon@dd:~/桌面/Test$ ls
hello hello.o libsub.so sub0.c sub0.o sub1.h
hello.c helloworld.cpp mylib sub0.h sub1.c sub1.o
运行程序
# 类似于将libsub.o放到Ubuntu的/lib目录下,然后运行test程序。
# 或者说声明出这样的一个路径
dargon@dd:~/桌面/Test$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dargon/桌面/Test/mylib
dargon@dd:~/桌面/Test$ ./hello
hello dar
sum = 3
sub = 1
版权声明:本文为Dallas01原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。