2016-01-30 87 views
0

分佈glibc版本是2.11.3。我將版本2.22編譯成/usr/glibc/使捲曲與不同的glibc版本:未解決的GLIBC_PRIVATE

爲7.46新curl版本上運行make我收到此錯誤:

/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_2.14' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libresolv.so.2: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 
/usr/glibc/lib/libpthread.so.0: undefined reference to `[email protected]_PRIVATE' 

我相信那一定是因爲新glibc版中的問題,但我的Linux知識太弱提供正確的路徑到新的glibc版本。

我在做什麼錯?謝謝!

+0

@EmployedRussian該問題可能是您的答案的「部分」重複,但我的答案顯示案件更加困難,因爲我必須區分其他庫的構建路徑。我不介意這個問題是否被標記爲重複,但我的答案涵蓋更多。是的,當然,您的答案有助於解決CUDA NSight中的鏈接問題,但我必須首先解決您的答案中未涵蓋的問題。 –

回答

0

有幾個問題:

  1. glibc 2.22 - 發行版本是2.11.3
  2. openssl 1.0.2f - 發行版本是0.9.8j [2009!]
  3. curl 7.46 .0 - 發行版本爲7.19.7
  4. libmemcached活動sasl版本來自發行版

我使用所有這些庫在我的CUDA項目,因爲我想更新所有這些庫到最新版本,事實上,這些步驟是要做到:

  1. glibc:建成/usr/glibc
  2. openssl:建立到/usr/glibc/openssl-curl/。運行./configure --prefix=/usr/glibc/openssl-curl/ --with-ssl=/usr/glibc/openssl-curl/ --disable-ldap - 非常重要:運行export $LDFLAGS=-L/usr/glibc/lib
  3. curl之前運行configure時,因爲該腳本將價值$LD_LIBRARY_PATH並且由於新glibc的版本不匹配和分發版本的所有程序崩潰與segmentation fault$LDFLAGS必須是空的。之前make再次運行export $LDFLAGS=-L/usr/glibc/lib
  4. 對於我的項目,我必須也重建libmemcachedglibc版本使用下面的命令:./configure --prefix=/usr/local/libmemcached --disable-sasl

在CUDA我要的路徑設置爲新庫,現在所有的作品。鏈接器選項-Wl,--rpath=/usr/glibc/lib-Wl,--dynamic-linker=/usr/glibc/lib/ld-linux-x86-64.so.2的設置也是非常重要的,以便加載新的glibc版本。

對於我的Linux系統我不得/etc/ld.so.conf添加路徑/usr/glibc/lib否則整個系統崩潰。