我是Ubuntu的新手,并且正在Amazon EC2云中运行Ubuntu。在Ubuntu EC2实例上找不到libdl.so
我试图编译在Ubuntu上盒(i386
和amd64
)cppunit
,它不会链接到libdl
g++ -g -O2 -o .libs/DllPlugInTester DllPlugInTester.o CommandLineParser.o -ldl ../../src/cppunit/.libs/libcppunit.so -lm -Wl,--rpath -Wl,/home/ubuntu/cppunit/lib
../../src/cppunit/.libs/libcppunit.so: undefined reference to `dlsym'
../../src/cppunit/.libs/libcppunit.so: undefined reference to `dlopen'
../../src/cppunit/.libs/libcppunit.so: undefined reference to `dlclose'
现在我不明白的是libdl.so
存在无误:
[email protected]:~/cppunit$ ls /lib/i386-linux-gnu/libdl*
/lib/i386-linux-gnu/libdl-2.15.so /lib/i386-linux-gnu/libdl.so.2
但whereis
什么也没有:
[email protected]:~/cppunit$ whereis libdl
libdl:
libc6
安装:
[email protected]:~/cppunit$ sudo apt-get install libc6
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
那么,为什么我的构建找不到呢?
的uname -r
是3.2.0-25-virtual
“正常”whereis
在Fedora上看起来是这样的:
[matt cppunit] whereis libdl
libdl: /lib/libdl.so /usr/lib/libdl.so /lib64/libdl.so /usr/lib64/libdl.so
任何想法?
编辑:我/etc/ld.so.conf.d/*.conf
似乎是合理的:
[email protected]:~$ cat /etc/ld.so.conf.d/*.conf
/usr/lib/i386-linux-gnu/mesa
# Multiarch support
/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu
/lib/i686-linux-gnu
/usr/lib/i686-linux-gnu
# libc default configuration
/usr/local/lib
# This directive teaches ldconfig to search in nosegneg subdirectories
# and cache the DSOs there with extra bit 1 set in their hwcap match
# fields. In Xen guest kernels, the vDSO tells the dynamic linker to
# search in nosegneg subdirectories and to match this extra hwcap bit
# in the ld.so.cache file.
hwcap 1 nosegneg
这是_exactly_我们也找到了。奇怪的是,它在32位,但不是64位。 – 2012-07-27 08:33:52