Picproje Elektronik Sitesi

BİLGİSAYAR => Linux => Konuyu başlatan: mir_as82 - 17 Mayıs 2016, 15:59:22

Başlık: linuxta derleme/link aşamasında alınan hata?
Gönderen: mir_as82 - 17 Mayıs 2016, 15:59:22
Makefile dosyası ile derlerken, alınan hata ile ilgili kısım aşağıdaki gibi:
....
...
gcc -o miras_b2 -Wl,-rpath,./lib -pipe -Wall -Wmissing-declarations -D_REENTRANT -D_GNU_SOURCE -DPIC -fpic -I./include miras_b2.o -lpthread -ldl -L./lib -lmiras
./lib/libmiras.so: undefined reference to `dlopen'
./lib/libmiras.so: undefined reference to `dlclose'
./lib/libmiras.so: undefined reference to `dlerror'
collect2: ld returned 1 exit status
make: *** [all] Error 1

Burada hata verip çıkıyor. Bunun nedeni ne olabilir. Aşağıda sırasıyla /lib ve /usr/lib altında olan libdl ile ilgili libraryler verilmiştir.

miras@miras:/lib$ ls -alt | grep libdl
lrwxrwxrwx  1 root root     15 May 17 12:34 libdl.so.2 -> libdl-2.11.1.so
-rw-r--r--  1 root root     9736 May 17 12:33 libdl-2.11.1.so

miras@miras:/usr/lib$ ls -alt | grep libdl
lrwxrwxrwx   1 root     root           15 May 17 12:30 libdl.so -> /lib/libdl.so.2
-rw-r--r--   1 root     root           8094 May 17 12:28 libdl.a




Başlık: Ynt: linuxta derleme/link aşamasında alınan hata?
Gönderen: Tagli - 17 Mayıs 2016, 16:28:07
Komut satırında -L/lib yerine -L./lib yazmışsın (/ önünde nokta var). Aynı durum -I argümanında da var (bu belki sorun olmayabilir). Sorun bundan kaynaklanıyor olabilir. Ayrıca bazen komut satırı opsiyonlarının veriliş sırası da linker hatalarına sebep olabiliyor.

Düzeltme: Pardon, sanırım . kasıtlı olarak konmuş. O zaman opsiyon sıralamasına odaklanmak lazım. Mantığını hiçbir zaman tam olarak anlayamadım ama bu -l ile başlayan opsiyonları sona koymak şart oluyor bazen.
Başlık: Ynt: linuxta derleme/link aşamasında alınan hata?
Gönderen: mir_as82 - 17 Mayıs 2016, 16:43:34
Yani -lpthread -ldl -L./lib -lmiras   sıralamasını şu şekilde falan mı yapmam gerekir?veya başka türlü? -L./lib -lmiras -lpthread -ldl
Başlık: Ynt: linuxta derleme/link aşamasında alınan hata?
Gönderen: Tagli - 17 Mayıs 2016, 23:07:19
Evet, bahsettiğim oydu ama işe yaramadıysa ne yapılabilir bilmiyorum. Maalesef dinamik kütüphanelerle pek deneyimim yok. Kullanırsam genelde statik kütüphane kullanıyorum. Belki statik kütüphane ile derlemeyi deneyebilirsin. Bu şekilde sorun çıkarma ihtimalini azaltabileceğini sanıyorum. Eğer statik kütüphane ile her şey yolunda giderse sonra dinamiğe geçmeyi deneyebilirsin. Bu arada, dinamiğin de iki türlüsü var. Program başlarken bağlananlar, veya program çalışırken kod kontrolünde bağlananlar. Sen sanırım ikincisini yapmaya çalışıyorsun. Birinci yöntem daha kolay ve sade olacaktır sanırım.
Başlık: Ynt: linuxta derleme/link aşamasında alınan hata?
Gönderen: yamak - 18 Mayıs 2016, 10:42:42
Hocam libmiras nasıl derlediniz?