linux 编译、链接、静态链接、动态链接
3个文件,main.c binaryprint.h binaryprint.c
函数的功能:打印一个整数的二进制形式。
binaryprint.h
void binaryprint(int a);
binaryprint.c
#include <stdio.h>
#include "binaryprint.h"
void binaryprint(int a)
{
int count = 32;
while (count--)
{
if (1 << count & a)
printf("1");
else
printf("0");
if (count % 8 == 0)
printf(" ");
}
printf("\n");
}
main.c
#include <stdio.h>
#include "binaryprint.h"
int main()
{
binaryprint(1);
binaryprint(8);
binaryprint(1024);
return 0;
}
编译:gcc -c main.c binaryprint.c
ls之后发现多了两个文件 main.o binaryprint.o
链接:gcc -o main main.o binaryprint.o
执行:./main
静态链接:
ar rc libbinaryprint.a binaryprint.o
libbinaryprint.a是生成的静态库文件,lib 是前缀,.a是后缀,实际上就是将.o文件打包在一起
gcc -o main2 main.o -L./ libbinaryprint.a 或者 gcc -o main2 main.o -L./ -lbinaryprint
-L./ 表示静态库文件在当前文件夹 -l选项可以省略前缀、后缀
然后./main2就可以啦
动态链接:
将动态库文件添加到库搜索路径中,
方法1:
一般在/lib 或者/user/lib
sudo cp /home/xx/libbinaryprint.so /lib
gcc -o main2 main.o -L./ libbinaryprint.so
然后./main2就可以了
方法2;
修改 LD_LIBRARY_PATH环境变量,将库文件的路径添加进来
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xx
gcc -o main3 mian.o -L./ libbinaryprint.so
然后./main3就可以了
上一篇: Linux 获取网卡流量
下一篇: windows通过PDH获取网卡流量