我想在Linux中對我的可執行文件中的庫進行硬編碼。在OS X上,這是通過在構建庫時提供-o參數後面的完整路徑來實現的。例如,我建在OS X這樣的庫:如何在Linux上對動態庫路徑進行硬編碼
cc foo.c --shared -o /home/sander/libfoo.so
當我建立所謂的「酒吧」,與此庫鏈接的可執行文件,我用otool -L上的可執行文件,我得到這樣的輸出:
bar:
/home/sander/libfoo.so (compatibility version 0.0.0, current version 0.0.0)
我現在可以從任何地方運行這個可執行文件,它總是能夠找到庫。
我正在使用gcc在Linux上尋找等效的功能。我寧願不使用rpath,因爲它沒有鏈接到特定的庫+路徑。
有沒有一個原因,你不能只是靜態鏈接?如果你擔心被移動的東西,那似乎是更安全的選擇。 –
我無法靜態鏈接。此功能是包管理系統的一部分,我必須能夠更新單個包。我不太關心圖書館正在搬遷。更重要的是,我可以從系統的任何地方找到這些庫。 –