假设你有一个共享库A.so,而另一个共享库B.so是按照A.so编译的。换句话说,如何将用户编译的共享库的共享库链接到Debian上的C++应用程序?
ldd B.so
提到A.so.此外,假设A.so和B.so已经被我自己成功编译,即它们位于我的主目录中的某处。
现在,我有一个应用程序应用程序,我想对A.so和B.so进行编译。因为A.so包含在B.so中,所以我只想链接B.so。
所以,我在两个不同的linux系统下做了这个。我尝试了SLES 10 SP2和Debian 7.7.0(基本安装,该系统没有什么特别之处)。在SLES 10 SP2上,这绝对没有问题。在Debian,我得到像下面这样的消息:
/usr/bin/ld: /tmp/ccjQFzpo.o: undefined reference to symbol '_ZN2sf7secondsEf'
A.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
A.so例如可以是我编自己一个Qt4函数库。如果我使用apt-get install来安装Qt4库,那么它可以工作。
我试图A.so和B.so添加到由
ldconfig -v
即我已经能够看到他们在此列表中给出的列表。它不能解决问题。
我错过了什么?
那么,那么如何安装Qt,例如,与突触,解决了我的问题(对于特定的库)?我的意思是,如果A.so是libQtCore.so,并且我用突触安装了Qt,那么我只需要链接B.so.我没有收到DSO错误消息。 –