[Çözüldü] Matlabda /usr/bin/ld: cannot find -lstdc++ hatası

Başlatan gocen, 15 Eylül 2011 - 12:40:22

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

gocen

teşekkürler @if
http://ubuntuguide.net/how-to-install-and-setup-gcc-4-1g4-1-in-ubuntu-10-0410-10
linki işime yaradı
bu kez de başka bir hata alıyorum ama en azından önceki hata gitti
şimdiki aldığım hata
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status

    mex: link of ' "arrayProduct.mexglx"' failed.

??? Error using ==> mex at 221
Unable to complete successfully.
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

@gocen, program libstdc++'ın yerini bulamadığı için mızmızlanıyor. sudo find / -name libstdc* çıktısına bakalım. Ona göre istediği kütüphane için sembolik bağlantı oluşturacağız.

gocen

çıktı şöyle
/var/lib/dpkg/info/libstdc++6.postinst
/var/lib/dpkg/info/libstdc++6-4.4-dev.md5sums
/var/lib/dpkg/info/libstdc++6.md5sums
/var/lib/dpkg/info/libstdc++6.list
/var/lib/dpkg/info/libstdc++6.postrm
/var/lib/dpkg/info/libstdc++6.shlibs
/var/lib/dpkg/info/libstdc++6-4.4-dev.list
/var/lib/dpkg/info/libstdc++6.symbols
/opt/lampp/lib/libstdc++.so.5
/usr/local/sys/os/glnx86/libstdc++.so.6
/usr/local/sys/os/glnx86/libstdc++.so.6.0.9
/usr/local/toolbox/edalink/foundation/hdllink/scripts/linux32/libstdc++.so.6
/usr/local/toolbox/edalink/foundation/hdllink/scripts/linux32/libstdc++.so.6.0.9
/usr/lib/libstdc++.so.5.0.5
/usr/lib/libstdc++.so.5
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.13
/usr/lib/gcc/i486-linux-gnu/4.4/libstdc++.a
/usr/lib/gcc/i486-linux-gnu/4.4/libstdc++.so
/usr/share/doc/libstdc++6-4.4-dev
/usr/share/doc/libstdc++6
/usr/share/doc/gcc-4.4-base/test-summaries/libstdc++.sum.gz
/usr/share/doc/gcc-4.4-base/C++/libstdc++_symbols.txt
/usr/share/locale-langpack/en_AU/LC_MESSAGES/libstdc++.mo
/usr/share/locale-langpack/en_GB/LC_MESSAGES/libstdc++.mo
/home/mustafa/NVIDIA_GPU_Computing_SDK/C/src/Interval/boost/config/stdlib/libstdcpp3.hpp
/home/mustafa/.local/share/Trash/files/gcc-4.2.4/libstdc++-v3
/home/mustafa/.local/share/Trash/files/gcc-4.2.4/libstdc++-v3/testsuite/libstdc++-abi
/home/mustafa/.local/share/Trash/files/gcc-4.2.4/libstdc++-v3/testsuite/lib/libstdc++.exp
/home/mustafa/.local/share/Trash/files/gcc-4.2.4/libstdc++-v3/testsuite/libstdc++-dg
/home/mustafa/.local/share/Trash/files/gcc-4.2.4/libstdc++-v3/po/libstdc++.pot
/home/mustafa/.dropbox-dist/libstdc++.so.6
/home/mustafa/.dropbox-dist-old-tIPxFE/libstdc++.so.6
/home/mustafa/cdroot/Linux/noarch/libstdc++-5-i386.tar.gz
/home/mustafa/cdroot/Linux/noarch/libstdc++-5-x86_64.tar.gz
/home/mustafa/.wine/drive_c/Dev-Cpp/lib/libstdc++.a
/home/mustafa/.wine/drive_c/Dev-Cpp/lib/libstdc++.la
/home/mustafa/.wine/drive_c/Dev-Cpp/lib/debug/libstdc++.a
/home/mustafa/.wine/drive_c/Dev-Cpp/lib/debug/libstdc++.la
/home/mustafa/Desktop/gcc-4.2.3/libstdc++-v3
/home/mustafa/Desktop/gcc-4.2.3/libstdc++-v3/testsuite/libstdc++-abi
/home/mustafa/Desktop/gcc-4.2.3/libstdc++-v3/testsuite/lib/libstdc++.exp
/home/mustafa/Desktop/gcc-4.2.3/libstdc++-v3/testsuite/libstdc++-dg
/home/mustafa/Desktop/gcc-4.2.3/libstdc++-v3/po/libstdc++.pot
/home/mustafa/Desktop/CW_matum2k9b/matum2k9b/update/bin/glnx86/libstdc++.so.6
/home/mustafa/Desktop/CW_matum2k9b/matum2k9b/update/bin/glnx86/libstdc++.so.6.0.9
/home/mustafa/Desktop/CW_matum2k9b/matum2k9b/update/bin/glnxa64/libstdc++.so.6
/home/mustafa/Desktop/CW_matum2k9b/matum2k9b/update/bin/glnxa64/libstdc++.so.6.0.9
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

@gocen, Matlab sisteme mi kurulu yoksa kullanıcı ev dizini altından mı çalıştırıyorsunuz?

gocen

Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

cd /usr/lib
ln -s libstdc++.so.5 libstdc++.so.5.0.5
deneyelim böyle bir.

gocen

denedim şu çıktıyı verdi
ln: creating symbolic link `libstdc++.so.5.0.5': File exists
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

Sembolik bağlantısı varmış onun. /var/lib/dpkg/info/libstdc++6.postinst
/usr/local/sys/os/glnx86/libstdc++.so.6
/usr/local/sys/os/glnx86/libstdc++.so.6.0.9
/usr/local/toolbox/edalink/foundation/hdllink/scripts/linux32/libstdc++.so.6
/usr/local/toolbox/edalink/foundation/hdllink/scripts/linux32/libstdc++.so.6.0.9
/usr/lib/libstdc++.so.5.0.5
/usr/lib/libstdc++.so.5
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.13
/usr/lib/gcc/i486-linux-gnu/4.4/libstdc++.a
/usr/lib/gcc/i486-linux-gnu/4.4/libstdc++.so
/home/mustafa/Desktop/CW_matum2k9b/matum2k9b/update/bin/glnx86/libstdc++.so.6
/home/mustafa/Desktop/CW_matum2k9b/matum2k9b/update/bin/glnx86/libstdc++.so.6.0.9
/home/mustafa/Desktop/CW_matum2k9b/matum2k9b/update/bin/glnxa64/libstdc++.so.6
/home/mustafa/Desktop/CW_matum2k9b/matum2k9b/update/bin/glnxa64/libstdc++.so.6.0.9


Bunlardan birinin bağlantısı yok ama hangisi? Çıkaramıyorum.

Paylaşımlı kütüphaneleri biraz inceledim. Bunların hepsinin /usr/lib/gcc/i486-linux-gnu/4.4/libstdc++.so kütüphanesine bağlı olması gerek öğrendiğim kadarıyla. Şimdi biz bu uygulamayı GCC 4.2 ile çalıştırmaya çalışıyoruz ama /usr/lib/gcc/i486-linux-gnu/4.2 diye bir dizinimiz yok. İşin içinden çıkamadım.

gocen

hepsinin içinde tek tek
ln -s libstdc++.so.5 libstdc++.so.5.0.5
komutunu deneyeyim mi
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

Yok @gocen. Bu hatayı ortaya çıkaran komut ve o komutula ilgili ayar dosyası vs. varsa onların içinde libstdc++ geçen bölüm var mı?

gocen

-v parametresini kullanarak şöyle bir çıktı aldım ama pek bişey anlamadım
mexopts.sh sourced from directory (DIR = $HOME/.matlab/$REL_VERSION)
   FILE = /home/mustafa/.matlab/R2009b/mexopts.sh
----------------------------------------------------------------
->    MATLAB                = /usr/local
->    CC                    = gcc
->    CC flags:
         CFLAGS             = -ansi -D_GNU_SOURCE -fPIC -pthread -m32  -fexceptions -D_FILE_OFFSET_BITS=64
         CDEBUGFLAGS        = -g
         COPTIMFLAGS        = -O -DNDEBUG
         CLIBS              = -Wl,-rpath-link,/usr/local/bin/glnx86 -L/usr/local/bin/glnx86 -lmx -lmex -lmat -lm -lstdc++
         arguments          =  -DMX_COMPAT_32
->    CXX                   = g++
->    CXX flags:
         CXXFLAGS           = -ansi -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -pthread
         CXXDEBUGFLAGS      = -g
         CXXOPTIMFLAGS      = -O -DNDEBUG
         CXXLIBS            = -Wl,-rpath-link,/usr/local/bin/glnx86 -L/usr/local/bin/glnx86 -lmx -lmex -lmat -lm
         arguments          =  -DMX_COMPAT_32
->    FC                    = g95
->    FC flags:
         FFLAGS             = -fexceptions -fPIC
         FDEBUGFLAGS        = -g
         FOPTIMFLAGS        = -O
         FLIBS              = -Wl,-rpath-link,/usr/local/bin/glnx86 -L/usr/local/bin/glnx86 -lmx -lmex -lmat -lm
         arguments          =  -DMX_COMPAT_32
->    LD                    = gcc
->    Link flags:
         LDFLAGS            = -pthread -shared -m32 -Wl,--version-script,/usr/local/extern/lib/glnx86/mexFunction.map -Wl,--no-undefined
         LDDEBUGFLAGS       = -g
         LDOPTIMFLAGS       = -O
         LDEXTENSION        = .mexglx
         arguments          =
->    LDCXX                 =
->    Link flags:
         LDCXXFLAGS         =
         LDCXXDEBUGFLAGS    =
         LDCXXOPTIMFLAGS    =
         LDCXXEXTENSION     =
         arguments          =
----------------------------------------------------------------

-> gcc -c  -I/usr/local/extern/include -I/usr/local/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fPIC -pthread -m32  -fexceptions -D_FILE_OFFSET_BITS=64  -DMX_COMPAT_32 -O -DNDEBUG  "yprime.c"

-> gcc -O -pthread -shared -m32 -Wl,--version-script,/usr/local/extern/lib/glnx86/mexFunction.map -Wl,--no-undefined -o  "yprime.mexglx"  yprime.o  -Wl,-rpath-link,/usr/local/bin/glnx86 -L/usr/local/bin/glnx86 -lmx -lmex -lmat -lm -lstdc++

/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status

    mex: link of ' "yprime.mexglx"' failed.
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

@gocen, işlem yapmamız gereken dizin /usr/local/bin/glnx86 imiş. Buna göre cd /usr/local/bin/glnx86
ln -s libstdc++.so.6.0.9 libstdc++.so
komutlarını girip dener misiniz?

gocen

Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

cagriemer

32 bit - 64 bit problemi olabilir mi acaba? Ubuntu ve MATLAB versiyonlarini yazabilir misiniz?

gocen

Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

@gocen, ALT+F2> gksu gedit /etc/ld.so.conf.d/libstdc++.conf ile oluşturacağın dosyanın içine /usr/lib/libstdc++.so.6.0.13 yazınca ne oluyor?

gocen

aynen uyguladım fakat değişen bişey olmadı
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if


gocen

2. kısım g++ ile ilgili olduğu için yapmamıştım ama şimdi 2.  kısmı uygularken
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.1 30

komutunda şöyle bir hata aldım
update-alternatives: error: alternative path /usr/bin/g++-4.1 doesn't exist.
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

Evet, 2. kısımla işimiz yok.

@gocen, mex -setup komutunu çalıştırmış mıydınız?

gocen

evet çalıştırdım fakat orda sadece compiler seçmemi istiyor
2 seçenek var ikisini de denedim ama bi değişiklik olmadı
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa

if

@gocen, önerebileceğim sadece iki öneri kaldı. İlki mex -v LD_LIBRARY_PATH=/usr/lib ya da mex -v LDLIBS=/usr/lib veya aynı yola çıkacak olan LDDEBUGFLAGS       = -g
         LDOPTIMFLAGS       = -O
         LDEXTENSION        = .mexglx
         arguments          =
satırlarını LDDEBUGFLAGS       = -g
         LDOPTIMFLAGS       = -O
         LDEXTENSION        = .mexglx
         LD_LIBRARY_PATH = /usr/lib
         arguments          =
ya da LDDEBUGFLAGS       = -g
         LDOPTIMFLAGS       = -O
         LDEXTENSION        = .mexglx
         LDLIBS = /usr/lib
         arguments          =
şeklinde düzenlemek. Bunlar da olmazsa gcc4.1'i derlerken libstdc++ kütüphanesinin yolunu göstermek. Belki http://www.mathworks.com/support/tech-notes/1600/1605.html bağlantısından bir şeyler çıkar.

gocen

mex komutlarını çalıştırmayla ilgili
https://help.ubuntu.com/community/MATLAB
linkindeki komutları uyguladım ve artık çalışıyor
yardım için teşekkürler @if
Ayinesi iştir kişinin lafa bakılmaz,
Şahsın görünür, rütbe-i aklı eserinde.
Ziya Paşa