码迷,mamicode.com
首页 > 其他好文 > 详细

编译动态库和连接动态库

时间:2014-10-28 20:05:31      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:gcc   libplus.so   -shared   ld_library_path   ldd   

$ 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
$ 

编译动态库和连接动态库

标签:gcc   libplus.so   -shared   ld_library_path   ldd   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!