首页 > 其他 > 详细

编译动态库和连接动态库

时间:2014-10-28 20:03:01      阅读:234      评论:0      收藏:0      [点我收藏+]
$ mkdir 1;cd 1
$ cat >plus.c
int plus(int i0, int i1)
{
	return i0 + i1;
}
$ cat >plus.h
int plus(int i0, int i1);
$ cat >main.c 
#include "plus.h"

int main(void)
{
	return plus(1,2);
}
$ cat >Makefile
main: main.o libplus.so plus.h
	gcc -g -L. -o main main.o -lplus
	rm main.o plus.o

main.o: main.c
	gcc -c -g -o main.o main.c

libplus.so: plus.o
	gcc -g -shared -o libplus.so plus.o

plus.o: plus.c
	gcc -c -g -fPIC -o plus.o plus.c

.PHONY: clean
clean:
	rm main libplus.so main.o plus.o
$ ls
Makefile  main.c  plus.c  plus.h
$ make
gcc -c -g -o main.o main.c
gcc -c -g -fPIC -o plus.o plus.c
gcc -g -shared -o libplus.so plus.o
gcc -g -L. -o main main.o -lplus
rm main.o plus.o
$ file libplus.so 
libplus.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
$ file main
main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
$ LD_LIBRARY_PATH=.
$ ldd main | grep plus
	libplus.so => ./libplus.so (0x00007f8018644000)
$ ./main
$ echo $?
3
$ 

编译动态库和连接动态库

原文:http://blog.csdn.net/nibzer/article/details/40545621

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!