社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
1、在学习《linux程序设计》的时候利用ubuntu14.04系统自带的dbm数据库对一个CD程序想要交叉编译,然都一直到mips架构下的WRTnode2P, 但是在交叉编译的时候找不到libgdbm库,在WRTnode.cc中也找不到对应的库文件(有一个libgdbm,但是版本吗大不相同)。于是找到从网上下载源码,因为dbm相关的函数都是用C语言开发的,可以自行交叉编译得到相应的可执行文件。
从网上下载源代码的命令:
sudo apt-get source libgdbm-dev
现在有2个源文件,一个头文件
app_ui.c access.c access.h。access.c access.h中包含dbm的函数的文件,将下载的源代码的文件夹放入到与app_ui.c 相同的目录下
gdbm的源代码就在gdbm-1.8.3中
makefile 书写 (还不是很简练,makefile刚刚学会制作)
all: app_ui
objs = app_ui.o access.o dbmdelete.o dbmrdonly.o findkey.o gdbmfetch.o gdbmsync.o
dbmdirfno.o dbmseq.o gdbmclose.o gdbmopen.o
getopt.o bucket.o dbmfetch.o dbmstore.o
gdbmdelete.o gdbmreorg.o global.o close.o dbminit.o
delete.o gdbmerrno.o gdbmseq.o hash.o update.o
dbmopen.o falloc.o gdbmexists.o gdbmsetopt.o seq.o version.o
dbmclose.o dbmpagfno.o fetch.o gdbmfdesc.o gdbmstore.o store.o
#INCLUDE=/usr/include/gdbm
INCLUDE=-I./gdbm-1.8.3
LIBS=-lgdbm
# On some distributoions you may need to change the above line to include
# the compatability library, as shown below.
#LIBS=-lgdbm_compat -lgdbm
#CC = gcc
CC = mipsel-openwrt-linux-gcc
%.o:
$(CC) $(INCLUDE) -c *.c ./gdbm-1.8.3/*.c
app_ui: $(objs)
# $(CC) -o $@ $(objs) -lgdbm
$(CC) -o app_ui $(objs)
在make编译的时候可能会出现有多个main函数的错误(可能包含测试文件),在目录下删除包含main函数的 *.o 文件再次make 就可以得到可执行文件app_ui。 经过测试可以在WRTnode下运行。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!