LINUX.ORG.RU

Компиляция


0

1

Столкнулся с такой проблемой - есть несколько машин с древними версиями Linux, на которых компиляция невозможна. Есть прожка на C которую надо скомпилить и запустить на тех машинах. Для копиляции поставил Centos 4.8, он ровесник тех дистров, компиляция проходит нормально, прожка работает в centos и в основном рабочем дистре, но выдает segfolt на машине под другой осью. Какие варианты решения могут быть?

зы прожка линкуется статически с либами.

Ответ на: комментарий от procyon

Не, процы там core2duo. Компиляция идет под i586, так что проблема не в этом похоже

ZaeLam3l ()

$ ulimit -u unlimited
$ ./my_cool_app
$ cp core local_machine

localmachine $ gdb -c core ./my_cool_app

andreyu ★★★★★ ()

Может прога использует новые версии gtk Qt да чего угодно, чего нет в тех линуксах, попробуй консольный hello world запусти...

pozitiffcat ★★★ ()
Ответ на: комментарий от pozitiffcat

>>Может прога использует новые версии gtk Qt да чего угодно, чего нет в тех линуксах, попробуй консольный hello world запусти...

Чисто консольная прога, линкуется статически

ZaeLam3l ()
Ответ на: комментарий от nanoo_linux

без статики выхлоп такой:
g++ md.cpp -lboost_regex -lssl -lcrypto -lmcrypt -lsqlite3 -L/usr/lib64/mysql -lmysqlclient -w
[root@spider 0]# ldd ./a.out
   linux-vdso.so.1 => (0x00007fff6c9ff000)
   libboost_regex.so.1.44.0 => /usr/lib64/libboost_regex.so.1.44.0 (0x0000003b2a400000)
   libssl.so.10 => /usr/lib64/libssl.so.10 (0x0000003fcea00000)
   libcrypto.so.10 => /lib64/libcrypto.so.10 (0x0000003b39000000)
   libmcrypt.so.4 => /usr/lib64/libmcrypt.so.4 (0x0000003b29c00000)
   libsqlite3.so.0 => /usr/lib64/libsqlite3.so.0 (0x0000003b3c000000)
   libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00007f15960b3000)
   libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b33800000)
   libm.so.6 => /lib64/libm.so.6 (0x0000003b29800000)
   libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b2ac00000)
   libc.so.6 => /lib64/libc.so.6 (0x0000003b29400000)
   libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1595e96000)
   libicuuc.so.44 => /usr/lib64/libicuuc.so.44 (0x0000003b41000000)
   libicui18n.so.44 => /usr/lib64/libicui18n.so.44 (0x0000003b42600000)
   libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003fcde00000)
   libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003fce200000)
   libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003b34c00000)
   libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003fce600000)
   libdl.so.2 => /lib64/libdl.so.2 (0x0000003b2a000000)
   libz.so.1 => /lib64/libz.so.1 (0x0000003b2a800000)
   librt.so.1 => /lib64/librt.so.1 (0x00007f1595c8b000)
   /lib64/ld-linux-x86-64.so.2 (0x0000003b29000000)
   libicudata.so.44 => /usr/lib64/libicudata.so.44 (0x0000003b41400000)
   libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003fcda00000)
   libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003b37400000)
   libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003b2b800000)
   libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003b2b000000)

ZaeLam3l ()
Ответ на: комментарий от ZaeLam3l

-lboost_regex -lssl -lcrypto -lmcrypt -lsqlite3 -L/usr/lib64/mysql -lmysqlclient -w сверь либы на машинке где компилишь, и где потом запускаешь (если я правильно тебя понял..)

pozitiffcat ★★★ ()
Ответ на: комментарий от ZaeLam3l

со статикой эти либы цепляются к другим и выдают сегфолты, тут нужно обновлять удовлетворяя зависимости, кароч жопа полная если машинок много

pozitiffcat ★★★ ()

если segfault - покажи хоть backtrace чтоли

можно попробовать компилить скриптом apgcc, брать тут: http://autopackage.googlecode.com/files/autopackage-1.4.2-x86.tar.bz2

CC=apgcc make

это должно автоматически слинковать с минимальной версией glibc ABI.

возможно, что придется собрать все депенды статически этим же apgcc.

waker ★★★★★ ()

ну и еще у тебя прожка вовсе не на C, а очень даже на C++, что делает задачу несколько более сложной :)

если на машинках нет libstdc++ v6 — я даж не знаю как быть (т.е. это может быть решаемо, но я не знаю как)

waker ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.