GCC'yi kullanarak bir yürütülebilir dosyayı bağlamak istediğim bir paylaşılan kitaplığım var. Paylaşılan kitaplık, libNAME.so biçiminde standart olmayan bir ada sahip olduğundan, normal -l seçeneğini kullanamıyorum. (Ayrıca bir Python eklentisi olur ve bu nedenle 'lib' öneki yoktur.)LibNAME.so adlandırma kuralını takip etmeyen bir kütüphane için -l veya hardcoding yolu olmadan GCC kullanılarak nasıl bağlanır?
Kitaplık dosyasının yolunu doğrudan bağlantı komut satırına iletebiliyorum, ancak bu kitaplık yolunun neden olmasına neden oluyor. yürütülebilir dosyaya kodlanmış. Örneğin
:
g++ -o build/bin/myapp build/bin/_mylib.so
yürütülebilir sabit şekilde yolunu neden olmadan bu kitaplığa bağlamak için bir yolu var mı? Eğer g ++ sonra çağrılır çalışma dizinine paylaşılan kütüphane kopyalayabilirsiniz Eğer
Bu, efendim, tam olarak aradığım şey. Teşekkürler! – kbluck
Bana çok yardımcı oldu, teşekkürler. –
Bu sonuç, normalde standart sonames için olduğu gibi '_mylib.so'yu gömmek yerine' -l: 'kullanarak bağlanmış kütüphanede yerleşik 'build/bin/_mylib.so' sonucunu buluyorum. Sonuç olarak, '_mylib.so' yüklemeyi denediğinizde, bu tam yol (' ldd' gösterecektir) ve kendi başına '_mylib.so'yu bulamaz. –