+ -
当前位置:首页 → 问答吧 → Linux下动态库生成后无法使用

Linux下动态库生成后无法使用

时间:2011-08-27

来源:互联网

帮帮忙,高手!!!
我编了一个makefile文件,实现生成了一个动态库,但就是执行main所在的c文件时,提示没发现需要加载的动态库
先看我的makefile文件:(主要的)
#!/bin/sh

CC=gcc -g

MY_DIR=$(HOME)/work2011/jinyj/FBSSrv123

INC_FLAG=-I/usr/include -I./ -I$(MY_DIR)/include

BIN_FALG=$(MY_DIR)/bin

SO_FLAG=-L$(SO_DIR) -lPubTest

SO_DIR=$(MY_DIR)/so

MY_OBJS=test1.o test2.o test3.o

libPubTest.so:$(MY_OBJS)
gcc -shared -fPIC -o $@ $(MY_OBJS)
mv -f $@ $(SO_DIR)
@echo "#####--OK--#####"

test:test.o
$(CC) $(INC_FLAG) -o $(BIN_FALG)/$@ $< $(SO_FLAG)

test1:test1.o
$(CC) $(INC_FLAG) -o $(BIN_FALG)/$@ $<

test2:test2.o
$(CC) $(INC_FALG) -o $(BIN_FLAG)/$@ $<

test3:test3.o
$(CC) $(INC_FLAG) -o $(BIN_FALG)/$@ $<


########################################
%.o:%.c
$(CC) $(INC_FLAG) -c $<

clean:
rm -f *.o

帮忙看看,是不是没加载进去动态库,注意看SO_FLAG
其他文件代码,如需看,稍后贴上去

作者: laojin_52   发布时间: 2011-08-27

你这只是编译了一个so文件啊,$(MY_DIR)/so有吗?
如果有的话,再写程序还是要用-l, -L来链接这个库,或者干脆把你的so文件放到系统动态库目录下。
把你敲的编译和执行命令发一下。

作者: jialejiahi   发布时间: 2011-08-27