【问题标题】:ld path update for compilingld 编译路径更新
【发布时间】:2011-12-15 11:03:43
【问题描述】:

我刚刚手动安装了 aprapr_util,所以我可以安装 activemq c++ 库。

当我尝试制作 cpp 库时,我收到以下错误:

**

libtool: 链接:g++ -ansi -pedantic -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -I/usr/local/apr/include/apr-1 -I/usr/local/apr/include/apr-1 -I /usr/kerberos/include -W -Wall -Wextra -Wconversion -fPIC -fstrict-aliasing -Wstrict-aliasing=2 -Wno-long-long -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -I/usr/local/apr/include /apr-1 -I/usr/local/apr/include/apr-1 -I/usr/kerberos/include -Wno-non-virtual-dtor -Wno-unused-parameter -Wno-uninitialized -I./.. /main -g -O2 -pthread -o .libs/example example-main.o ../main/.libs/libactivemq-cpp.so -lexpat -L/usr/kerberos/lib64 /usr/local/apr/lib /libaprutil-1.so /usr/local/apr/lib/libapr-1.so -luuid -lrt -lcrypt /usr/local/apr/lib/libexpat.so -lssl -lcrypto -ldl -lz -lpthread -pthread -Wl,-rpath -Wl,/usr/local/lib -Wl,-rpath -Wl,/usr/local/apr/lib /usr/bin/ld: 找不到 -lexpat collect2: ld 返回 1 个退出状态

**

expatapr-util 内并且没有被链接。如何更新 ld 路径以便 make 或 environment 可以找到它?

或者简而言之:我该如何解决这个问题?

【问题讨论】:

  • ld与编译无关

标签: c++ linux path compilation


【解决方案1】:

通常您需要使用-L 选项手动指定库路径。

在单个 ld 操作中看起来像 ld filename -Lpath -llibname。或者在这种情况下,您可能需要将库的路径(此处为 apr-util)添加到 Makefile 中的库路径常量中。

【讨论】:

  • 通常库已经在适当的位置,您根本不需要指定任何内容。
  • @DarthVader 看来你应该先安装expat。从您的包管理器或sourceforge.net/projects/expat 获取
  • 已安装软件包 expat-1.95.8-8.3.el5_5.3.x86_64 和最新版本软件包 expat-1.95.8-8.3.el5_5.3.i386 已经安装和最新版本
  • @DarthVader 哎呀。然后,fedora 可能会将 expat 包分为运行时包和开发包。当我尝试使用 OpenIL 进行开发时,ubuntu 上的情况类似。但是由于我现在使用的是 ArchLinux,并且在搜索 expat 时我只得到了一个结果包,所以我没有考虑过这种“分离包策略”:-(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 2021-02-05
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
相关资源
最近更新 更多