The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"проблемы при собрке static"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"проблемы при собрке static"  
Сообщение от cook (ok) on 22-Авг-08, 13:39 
сделал простенькую программку использующую мускуль, собрать нужно именно статиком
делаю так

gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include -I/usr/local/include -I/usr/include/mysql -I/usr/local/include/mysql -O2 -g0 -static -MT cron.o -MD -c -o cron.o cron.c
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include -I/usr/local/include -I/usr/include/mysql -I/usr/local/include/mysql -O2 -g0 -static -MT log.o -MD -c -o log.o log.c

gcc -O2 -g0 -L/usr/lib -L/usr/lib/mysql -L/usr/local/lib -L/usr/local/lib/mysql -static -o cron cron.o log.o -lz -lmysqlclient -lm -lcrypt -lpthread

gcc 4.2.3

имею ошибку
/usr/lib/libmysqlclient.a(my_compress.o): In function `my_uncompress':
(.text+0x65): undefined reference to `uncompress'
/usr/lib/libmysqlclient.a(my_compress.o): In function `my_compress_alloc':
(.text+0x110): undefined reference to `compress'

как это исправить ?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "проблемы при собрке static"  
Сообщение от eee (ok) on 22-Авг-08, 13:49 
>собрать нужно именно статиком

Зачем такие ограничения?

>имею ошибку
>/usr/lib/libmysqlclient.a(my_compress.o): In function `my_uncompress':
>(.text+0x65): undefined reference to `uncompress'
>/usr/lib/libmysqlclient.a(my_compress.o): In function `my_compress_alloc':
>(.text+0x110): undefined reference to `compress'
>
>как это исправить ?

Подключить статическую либу где есть: reference to `uncompress', `compress'.

libmysqlclient.a может быть интерфейс к динамической либе *.so

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "проблемы при собрке static"  
Сообщение от cook (ok) on 22-Авг-08, 14:43 
прога должна работать на многих местах где непонятно будут ли нужные либы и где, потому статик
>Подключить статическую либу где есть: reference to `uncompress', `compress'.
>
>libmysqlclient.a может быть интерфейс к динамической либе *.so

эта либа подключена, -lz

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "проблемы при собрке static"  
Сообщение от eee (ok) on 22-Авг-08, 15:08 
>прога должна работать на многих местах где непонятно будут ли нужные либы

Если так то подключать надо ВСЕ статические либы при компиляции,
Линкер не будет вытягивать код из динамической либы и класть в прогу.
На системе без динамических либ может не работать.
Без всяких -fPIC -pipe.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "проблемы при собрке static"  
Сообщение от eee (ok) on 22-Авг-08, 16:17 
>эта либа подключена, -lz

У меня это $ls /usr/lib64/liblz*
/usr/lib64/liblzo2.la*  /usr/lib64/liblzo2.so.2@
/usr/lib64/liblzo2.so@  /usr/lib64/liblzo2.so.2.0.0*

Надо что-то подобное -L/usr/lib/liblzo.a

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "проблемы при собрке static"  
Сообщение от cook (ok) on 22-Авг-08, 17:52 
>У меня это $ls /usr/lib64/liblz*
>/usr/lib64/liblzo2.la*  /usr/lib64/liblzo2.so.2@
>/usr/lib64/liblzo2.so@  /usr/lib64/liblzo2.so.2.0.0*
>
>Надо что-то подобное -L/usr/lib/liblzo.a

у меня это /usr/lib/libz.a

только что попробовал одну штуку, поставил -lz в самом конце, т.е.
gcc -O2 -g0 -L/usr/lib -L/usr/lib/mysql -L/usr/local/lib -L/usr/local/lib/mysql -static -o cron cron.o log.o -lmysqlclient -lm -lcrypt -lpthread -lz
и оно таки собралось...


теперь бы еще эти варнинги побороть
/usr/lib/libmysqlclient.a(mf_pack.o): In function `unpack_dirname':
(.text+0x6cc): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/libmysqlclient.a(libmysql.o): In function `read_user_name':
(.text+0x5ed7): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/libmysqlclient.a(mf_pack.o): In function `unpack_dirname':
(.text+0x6e1): warning: Using 'endpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/libmysqlclient.a(my_gethostbyname.o): In function `my_gethostbyname_r':
(.text+0x3c): warning: Using 'gethostbyname_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/libmysqlclient.a(libmysql.o): In function `mysql_server_init':
(.text+0x695d): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "проблемы при собрке static"  
Сообщение от eee (ok) on 22-Авг-08, 18:20 
>warning: Using 'getpwnam' in statically linked applications requires at runtime the
>shared libraries from the glibc version used for linking

Оно не будет работать без glibc (libc-2.x.so) другой версии,
как побороть не знаю, но старые на новых должны работать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "проблемы при собрке static"  
Сообщение от eee (ok) on 22-Авг-08, 18:46 
readelf -d prog покажет какие динамические либы нужны.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "проблемы при собрке static"  
Сообщение от cook (ok) on 22-Авг-08, 14:56 
попробовал тоже самое сделать на другой машинке с фрей и гсс 3.4.4, теже грабли


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру