首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/usr/bin/ld:编译-ldb时找不到iproute2

/usr/bin/ld:编译-ldb时找不到iproute2
EN

Unix & Linux用户
提问于 2014-01-27 22:23:49
回答 1查看 13.8K关注 0票数 3

我试图在Fedora 19上编译iucute2-3-12-0,我已经安装了BerkeleyDB,ls -la /usr/lib/libdb*命令给出了以下结果:

代码语言:javascript
复制
-rwxr-xr-x 1 root root 1847852 May 16  2013 /usr/lib/libdb-5.3.so
lrwxrwxrwx 1 root root      12 Sep 18 20:15 /usr/lib/libdb-5.so -> libdb-5.3.so
lrwxrwxrwx 1 root root      18 Jan  4 12:57 /usr/lib/libdbus-1.so.3 -> libdbus-1.so.3.7.4
-rwxr-xr-x 1 root root  317720 Nov 11 19:24 /usr/lib/libdbus-1.so.3.7.4

我有最新版本的Bison和Flex。我使用内核: 3.12.8-200.fc19.x86_64。我在/usr/lib and /usr/lib64有ldb。不过,我没有在LDFLAGS中找到任何Makefile

我收到一个错误:

代码语言:javascript
复制
ssfilter.y: conflicts: 27 shift/reduce
/usr/bin/ld: cannot find -ldb
collect2: error: ld returned 1 exit status
make[1]: *** [arpd] Error 1
make: *** [all] Error 2

仔细看一看make日志的末尾就会发现:

代码语言:javascript
复制
        make[1]: Entering directory `/root/Traffic_Shaping/iproute2-3.12.0/bridge'
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE   -c -o bridge.o bridge.c
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE   -c -o fdb.o fdb.c
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE   -c -o monitor.o monitor.c
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE   -c -o link.o link.c
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE   -c -o mdb.o mdb.c
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE   -c -o vlan.o vlan.c
gcc   bridge.o fdb.o monitor.o link.o mdb.o vlan.o ../lib/libnetlink.a ../lib/libutil.a  ../lib/libnetlink.a ../lib/libutil.a -o bridge
make[1]: Leaving directory `/root/Traffic_Shaping/iproute2-3.12.0/bridge'
make[1]: Entering directory `/root/Traffic_Shaping/iproute2-3.12.0/misc'
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE   -c -o ss.o ss.c
bison ssfilter.y -o ssfilter.c
ssfilter.y: conflicts: 27 shift/reduce
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE   -c -o ssfilter.o ssfilter.c
gcc   ss.o ssfilter.o  ../lib/libnetlink.a ../lib/libutil.a -o ss
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE  -o nstat nstat.c -lm
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE  -o ifstat ifstat.c ../lib/libnetlink.a ../lib/libutil.a -lm
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE  -o rtacct rtacct.c ../lib/libnetlink.a ../lib/libutil.a -lm
gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib64\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE -I/usr/include/libdb4  -o arpd arpd.c ../lib/libnetlink.a ../lib/libutil.a -ldb -lpthread
/usr/bin/ld: cannot find -ldb
collect2: error: ld returned 1 exit status
make[1]: *** [arpd] Error 1
make[1]: Leaving directory `/root/Traffic_Shaping/iproute2-3.12.0/misc'
make: *** [all] Error 2

我怎样才能让ld找到libdb

EN

回答 1

Unix & Linux用户

发布于 2014-01-28 00:22:26

lib将包含32位库和lib64 64位。我假设您的gcc正在生成64位二进制文件。因此,/lib64 (/usr/lib64)需要有正确的数据库库。您可以使用--verbose手动运行gcc命令,查看它所做的一切。(即它正在运行的ld命令)

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/111223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档