我在Linux機器上編寫了一個小型C++項目。我能夠使用-I和_L,-l命令正確地編譯和鏈接代碼。如何在LD_LIBRARY_PATH包含32位和64位版本的路徑時指定正確的庫使用
我在網上讀到,在運行代碼的時候,我們需要在LD_LIBRARY_PATH變量中有.so文件的路徑。現在我使用的是64位,還有另一個應用程序使用32位版本的庫。所以LD_LIBRARY_PATH有兩個版本的庫路徑。
當我嘗試運行我的應用程序,例如。 ./xyz ARG1 ARG2,我收到以下錯誤
./DaemonCpp: error while loading shared libraries: libldap.so: wrong ELF class: ELFCLASS32
我想這是因爲它試圖加載32位版本,而不是64位版本。我試着改變LD_LIBRARY_PATH中提到的路徑的順序,使得到64位的路徑先到達,但仍然出現這個錯誤。有沒有一種方法可以指導應用程序使用庫的64位版本。
作爲我的主要問題的第二個問題,當我們鏈接C++代碼時,我們使用-L和庫名稱使用-l指定庫路徑。然後它應該知道在運行可執行文件時使用哪個庫,並且我不應該首先得到這個錯誤
感謝您的回答 –