Бинарник на C++ под разные *никсы. Возможно?

Тема в разделе "Другие языки", создана пользователем lexesv, 10 май 2008.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    два сервера. Две разные системы. На одном Дебиан, на другом Генту.

    компилю с libstdc++ statically
    Код:
    ln -s `g++ -print-file-name=libstdc++.a`
    
    g++ -static-libgcc -L. -o test test.cpp
    на обоих системах.

    Тот что скомпилился на дебиане запускается и на генту тоже.
    А тот что скомпилён на генту работает только на ней.

    Может кто то что подскажет??
     
  2. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    если gentoo у тебя компилировался при установке, то он намертво привязан к этой машине и все что компилится потом компилится оптимальный образом под данную машину. поэтому может и не работать на другой linux системе.

    кстати, посмотри может у gcc под gentoo есть опция типа "режим совместимости"
     
  3. Chekist

    Chekist Создатель

    Регистр.:
    31 июл 2006
    Сообщения:
    35
    Симпатии:
    0
    Компилить тока.
     
  4. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    Ответ неправильный. Оба бинарика заработали на Убунту.

    Значит так. Вывод uname

    Дебиан
    Linux 2.4.32-grsec+f6b+gr217+nfs+a32+fuse23+tg+++opt+c8+gr2b-v6.194 #1 SMP Tue Jun 6 15:52:09 PDT 2006 i686 GNU/Linux

    Генту
    Linux 2.6.19-gentoo-r5 #1 SMP Wed Apr 4 05:44:43 UTC 2007 i686 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ AuthenticAMD GNU/Linux

    Убунту
    Linux 2.6.24-17-generic #1 SMP Thu May 1 14:31:33 UTC 2008 i686 GNU/Linux

    принтуем shared library dependencies

    этот скомпилён на дебиане
    # ldd test
    linux-gate.so.1 => (0xb7f8e000)
    libm.so.6 => /lib/libm.so.6 (0xb7f61000)
    libc.so.6 => /lib/libc.so.6 (0xb7e39000)
    /lib/ld-linux.so.2 (0xb7f8f000)

    этот скомпилён на генту
    # ldd test1
    linux-gate.so.1 => (0xb7ef0000)
    libm.so.6 => /lib/libm.so.6 (0xb7ec3000)
    libc.so.6 => /lib/libc.so.6 (0xb7d9b000)
    /lib/ld-linux.so.2 (0xb7ef1000)
     
  5. wespire

    wespire Постоялец

    Регистр.:
    18 мар 2008
    Сообщения:
    55
    Симпатии:
    6
    какие версии gcc на обоих системах?
     
  6. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    Код:
    $ g++ -v
    Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.5/specs
    Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --enable-__cxa_atexit --with-system-zlib --enable-nls --without-included-gettext --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux
    Thread model: posix
    gcc version 3.3.5 (Debian 1:3.3.5-13)

    Код:
     g++ -v
    Using built-in specs.
    Target: i686-pc-linux-gnu
    Configured with: /var/tmp/portage/sys-devel/gcc-4.1.1-r3/work/gcc-4.1.1/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
    Thread model: posix
    gcc version 4.1.1 (Gentoo 4.1.1-r3)
     
  7. wespire

    wespire Постоялец

    Регистр.:
    18 мар 2008
    Сообщения:
    55
    Симпатии:
    6
    ну и что непонятного?:)
     
    lexesv нравится это.
  8. spamkit

    spamkit Создатель

    Регистр.:
    21 ноя 2007
    Сообщения:
    25
    Симпатии:
    2
  9. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    Блин, перед тем как писать всякую хрень, стоило почитать начало темы

    Код:
    ln -s `g++ -print-file-name=libstdc++.a`
    
    g++ -static-libgcc -L. -o test test.cpp
    Я что по твоему использую????
     
  10. viktor_viktor

    viktor_viktor Создатель

    Регистр.:
    19 сен 2008
    Сообщения:
    48
    Симпатии:
    0
    если gentoo у тебя компилировался при установке, то он намертво привязан к этой машине и все что компилится потом компилится оптимальный образом под данную машину. поэтому может и не работать на другой linux системе.

    кстати, посмотри может у gcc под gentoo есть опция типа "режим совместимости"
    __________________
     
Статус темы:
Закрыта.