Доброго времени суток.
Можно ли скомпилить прогу так, чтобы она запускалась на другой линух-машине без библиотек?
Компилю на одной машине - работает. Беру бинарник, переношу на другую машину - виснет(библиотеки - libxml2). Я думаю, что дело в библиотеках (или их отсутствии).
Подскажите, кто знает.С уважением,
Андрей.
`man cc` на предмет "-static"
Неплохо также посмотреть, что выдает ldd
>Неплохо также посмотреть, что выдает lddldd выдаёт следующее.
[root@websitebuilder script]# ldd client3
libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x4002c000)
libz.so.1 => /usr/lib/libz.so.1 (0x40110000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4011e000)
libm.so.6 => /lib/tls/libm.so.6 (0x4012b000)
librt.so.1 => /lib/librt.so.1 (0x4014d000)
libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
[root@websitebuilder script]#Но что это и как с этим бороться? Что это в принципе понятно - а как бороться?
Прочитал ман гсс про статик. Пробовал компилить -static-libgcc - не помогает. Подскажите, пожалуйста.
>>Неплохо также посмотреть, что выдает ldd
>
>ldd выдаёт следующее.
>[root@websitebuilder script]# ldd client3
> libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x4002c000)
> libz.so.1 => /usr/lib/libz.so.1 (0x40110000)
> libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4011e000)
> libm.so.6 => /lib/tls/libm.so.6 (0x4012b000)
> librt.so.1 => /lib/librt.so.1 (0x4014d000)
> libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
>[root@websitebuilder script]#
>
>Но что это и как с этим бороться? Что это в принципе
>понятно - а как бороться?
>
>Прочитал ман гсс про статик. Пробовал компилить -static-libgcc - не помогает. Подскажите,
>пожалуйста.
Нужно иметь в наличии библиотеки libxml2.a, libz.a, libpthread.a .. и т.д.
Библиотеки типа *.so линкуются только динамически.
для этого необходимо взять исходники всего "непереносимого" (т.е., напр., pthread есть на любой БСД) и перекомпилить со -static (обычно делается в ./configure --enable-static).