+ -
当前位置:首页 → 问答吧 → 6个变态的C语言写的Hello World

6个变态的C语言写的Hello World

时间:2011-07-26

来源:互联网

大家好:
最近我在学习共享库的使用。
目前静态库没有问题了。共享库的显式链接也没有问题了(dlopen).
但在隐式链接上,遇到了问题。
经过网上实例的比较,我发现问题在于共享库的版本号上。
如果创建的so文件有版本号,例如libbwtool.so.1.0.0,而不是libbwtool.so。那gcc链接的时候就会找不到。
即使我复制libbwtool.so.1.0.0到/usr/local/lib(也就是python同一级目录),我也执行了ldconfig。
依旧提示:/usr/bin/ld: cannot find -lbwtool
目前,我只能在当前目录 ln libbwtool.so.1.0.0 libbwtool.so,这样才能通过编译
我的问题是难道必须这样做吗?如果我想链接特定的版本,必须要创建软链接吗?
如果我想通过ldconfig,怎么做呢?
谢谢。


以下是我的makefile
all:myapp

CC = gcc
AR = ar

INCLUDE = .

CFLAGS = -g -Wall

main.o: main.c libbwtool.so libutil.a
$(CC) -I$(INCLUDE) $(CFLAGS) -lbwtool -c main.c -lutil

util.o: util.c
$(CC) -I$(INCLUDE) $(CFLAGS) -c util.c

libutil.a:util.o
$(AR) rcs libutil.a util.o

bwtool.o:bwtool.c
$(CC) -I$(INCLUDE) $(CFALGS) -c -fPIC bwtool.c

libbwtool.so:bwtool.o
$(CC) -shared -Wl,-soname,bwtool -o libbwtool.so.1.0.0 bwtool.o
ln libbwtool.so.1.0.0 libbwtool.so

myapp: main.o
$(CC) -o myapp main.o libutil.a -L. -lbwtool

clean:
-rm myapp main.o util.o libutil.a libbwtool.so.1.0.0 bwtool.o

作者: febwave   发布时间: 2011-07-26

要这样,
系统安装的全部库都会创建一个不带版本的链接

作者: windwiny   发布时间: 2011-07-26

大家好:
最近我在学习共享库的使用。
目前静态库没有问题了。共享库的显式链接也没有问题了(dlopen).
但在隐式链接上,遇到了问题。
经过网上实例的比较,我发现问题在于共享库的版本号上。
如果创建的so文件有版本号,例如libbwtool.so.1.0.0,而不是libbwtool.so。那gcc链接的时候就会找不到。
即使我复制libbwtool.so.1.0.0到/usr/local/lib(也就是python同一级目录),我也执行了ldconfig。
依旧提示:/usr/bin/ld: cannot find -lbwtool
目前,我只能在当前目录 ln libbwtool.so.1.0.0 libbwtool.so,这样才能通过编译
我的问题是难道必须这样做吗?如果我想链接特定的版本,必须要创建软链接吗?
如果我想通过ldconfig,怎么做呢?
谢谢。


以下是我的makefile
all:myapp

CC = gcc
AR = ar

INCLUDE = .

CFLAGS = -g -Wall

main.o: main.c libbwtool.so libutil.a
$(CC) -I$(INCLUDE) $(CFLAGS) -lbwtool -c main.c -lutil

util.o: util.c
$(CC) -I$(INCLUDE) $(CFLAGS) -c util.c

libutil.a:util.o
$(AR) rcs libutil.a util.o

bwtool.o:bwtool.c
$(CC) -I$(INCLUDE) $(CFALGS) -c -fPIC bwtool.c

libbwtool.so:bwtool.o
$(CC) -shared -Wl,-soname,bwtool -o libbwtool.so.1.0.0 bwtool.o
ln libbwtool.so.1.0.0 libbwtool.so

myapp: main.o
$(CC) -o myapp main.o libutil.a -L. -lbwtool

clean:
-rm myapp main.o util.o libutil.a libbwtool.so.1.0.0 bwtool.o

作者: febwave   发布时间: 2011-07-26

要这样,
系统安装的全部库都会创建一个不带版本的链接

作者: windwiny   发布时间: 2011-07-26

大家好:
最近我在学习共享库的使用。
目前静态库没有问题了。共享库的显式链接也没有问题了(dlopen).
但在隐式链接上,遇到了问题。
经过网上实例的比较,我发现问题在于共享库的版本号上。
如果创建的so文件有版本号,例如libbwtool.so.1.0.0,而不是libbwtool.so。那gcc链接的时候就会找不到。
即使我复制libbwtool.so.1.0.0到/usr/local/lib(也就是python同一级目录),我也执行了ldconfig。
依旧提示:/usr/bin/ld: cannot find -lbwtool
目前,我只能在当前目录 ln libbwtool.so.1.0.0 libbwtool.so,这样才能通过编译
我的问题是难道必须这样做吗?如果我想链接特定的版本,必须要创建软链接吗?
如果我想通过ldconfig,怎么做呢?
谢谢。


以下是我的makefile
all:myapp

CC = gcc
AR = ar

INCLUDE = .

CFLAGS = -g -Wall

main.o: main.c libbwtool.so libutil.a
$(CC) -I$(INCLUDE) $(CFLAGS) -lbwtool -c main.c -lutil

util.o: util.c
$(CC) -I$(INCLUDE) $(CFLAGS) -c util.c

libutil.a:util.o
$(AR) rcs libutil.a util.o

bwtool.o:bwtool.c
$(CC) -I$(INCLUDE) $(CFALGS) -c -fPIC bwtool.c

libbwtool.so:bwtool.o
$(CC) -shared -Wl,-soname,bwtool -o libbwtool.so.1.0.0 bwtool.o
ln libbwtool.so.1.0.0 libbwtool.so

myapp: main.o
$(CC) -o myapp main.o libutil.a -L. -lbwtool

clean:
-rm myapp main.o util.o libutil.a libbwtool.so.1.0.0 bwtool.o

作者: febwave   发布时间: 2011-07-26

要这样,
系统安装的全部库都会创建一个不带版本的链接

作者: windwiny   发布时间: 2011-07-26