【发布时间】:2010-12-08 19:53:37
【问题描述】:
好的,我已经向 linux 库添加了一些功能。
但是,即使在“make install”之后,我试图确认功能的程序也链接到以前的版本。
所以“make install”把我的库放在这里: '/usr/local/lib' 和 '/usr/local/include'
我在配置中使用了以下内容: ./configure --enable-maintainer-mode --enable-uninstalled-build 'CFLAGS=-g -O0' 'CXXFLAGS=-g -O0' 'JFLAGS=-g -O0' 'FFLAGS=-g -O0' CPPFLAGS ='-L /usr/local/lib/ -I /usr/local/include/gpod-1.0/'
但是当我尝试执行程序时,我得到“找不到符号”和“插件无法加载”
当我 ldd 生成的插件时: ~/Development/rhythmbox/plugins/ipod/.libs$ ldd libipod.so
linux-gate.so.1 => (0x00d97000)
librhythmbox-core.so.1 => /home/gary/Development/rhythmbox/shell/.libs/librhythmbox core.so.1 (0x009ad000)
libgpod.so.4 => /usr/lib/libgpod.so.4 (0x00509000)
强调重点是因为它显然链接到错误的库...当我查看 make 文件时,我看到以下内容:
IPOD_CFLAGS = -pthread -I/usr/local/include/gpod-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gdk- pixbuf-2.0 -I/usr/include/libpng12
IPOD_LIBS = -pthread -L/usr/local/lib -lgpod -lgdk_pixbuf-2.0 -lm -lgobject-2.0 -lgmodule-2.0 -lpng12 -lgthread-2.0 -lrt -lglib-2.0
所以 CPPFLAGS 被传递给插件,在 .deps 中我看到包含了正确的头文件... IE:
~/Development/rhythmbox/plugins/ipod/.deps$ less rb-ipod-source.Po | grep gpod
/usr/local/include/gpod-1.0/gpod/itdb.h ../../lib/eel-gconf-extensions.h
/usr/local/include/gpod-1.0/gpod/itdb.h:
Ubuntu 10.10
有什么想法吗?
【问题讨论】:
-
libgpod.so.4是否安装到/usr/local/lib?如果是,$LD_RUN_PATH、$LD_LIBRARY_PATH、/etc/ld.so.conf的内容? -
ld.so.conf=include /etc/ld.so.conf.d/*.conf 其他 2 个变量为空... libgpod.so.4 确实存在于 /usr/local/ lib 好像是在找老版本……
-
在解决这个问题之前,我已经更改了库上的安装目录以覆盖生产版本...希望这可行。
标签: linux linker ubuntu-10.10 rhythmbox