URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3270
[ Назад ]

Исходное сообщение
"Не получается с mysql++ собрать задачу с -static"

Отправлено Lamr , 11-Авг-04 14:27 
никто не боролся? Если у ISP libmysql++ не установлен, ЦГИ не работает :-((

Содержание

Сообщения в этом обсуждении
"Не получается с mysql++ собрать задачу с -static"
Отправлено mirya , 11-Авг-04 15:55 
1) У тебя mysql собран без статических библиотек (*.a), они и компонуются в -static, пересобери
2) Альт. собрать с -shared и в довесок к CGI-проге поставлять mysql.so

"Не получается с mysql++ собрать задачу с -static"
Отправлено Lamr , 11-Авг-04 17:29 
>1) У тебя mysql собран без статических библиотек (*.a), они и компонуются
>в -static, пересобери

Есть файл libmysqlclient.a, только она в нём не все фукции находит

>2) Альт. собрать с -shared и в довесок к CGI-проге поставлять mysql.so
>

Спасибо, это то, что надо.
Остальное прочитаю в man gcc Ж-))))


"Не получается с mysql++ собрать задачу с -static"
Отправлено mirya , 11-Авг-04 17:33 
>Есть файл libmysqlclient.a, только она в нём не все фукции находит

Уже интересно... а что (какие ф-ции) не находит?


"Не получается с mysql++ собрать задачу с -static"
Отправлено Lamr , 11-Авг-04 20:08 
>>Есть файл libmysqlclient.a, только она в нём не все фукции находит
>
>Уже интересно... а что (какие ф-ции) не находит?

/usr/local/lib/mysql/libmysqlclient.a(my_compress.o): In function `my_compress':
my_compress.o(.text+0x7d): undefined reference to `compress'
/usr/local/lib/mysql/libmysqlclient.a(my_compress.o): In function `my_compress_alloc':
my_compress.o(.text+0x158): undefined reference to `compress'
/usr/local/lib/mysql/libmysqlclient.a(my_compress.o): In function `my_uncompress':
my_compress.o(.text+0x1f1): undefined reference to `uncompress'



"Не получается с mysql++ собрать задачу с -static"
Отправлено Lamr , 11-Авг-04 20:19 

>>Уже интересно... а что (какие ф-ции) не находит?

собираю так:

c++ -o logout.cgi logout.c -O6  -I/usr/local/include/mysql -L/usr/local/lib/mysql -L/usr/local/lib -lmysqlclient -lsqlplus


"Не получается с mysql++ собрать задачу с -static"
Отправлено mirya , 11-Авг-04 20:32 
>
>>>Уже интересно... а что (какие ф-ции) не находит?
>
>собираю так:
>
>c++ -o logout.cgi logout.c -O6  -I/usr/local/include/mysql -L/usr/local/lib/mysql -L/usr/local/lib -lmysqlclient -lsqlplus

Смахивает на libz - Добавь в конец "-lz" (под рукой нету юнихмашины)


"Не получается с mysql++ собрать задачу с -static"
Отправлено Lamr , 11-Авг-04 20:44 

>Смахивает на libz - Добавь в конец "-lz"

mirya! Ты компьютерный гений! Жму руку. Две руки.
Всё получилось.
спасибо*1024.


">Смахивает на libz - Добавь в конец '-lz'"
Отправлено Lamr , 11-Авг-04 20:53 

8-()

Мля!
Теперь он весит мегабайт!
А без -static 50 килобайт весил.
Вот бл@ть!


">Смахивает на libz - Добавь в конец '-lz'"
Отправлено mirya , 11-Авг-04 20:57 
конечно, просуммируй размеры либ - получишь где-то столько же. Я как раз сегодня спрашивал, как слинковать часть либ динамически, а другую - статически. Молчат, партизаны :)

">Смахивает на libz - Добавь в конец '-lz'"
Отправлено qq , 12-Авг-04 01:15 
>конечно, просуммируй размеры либ - получишь где-то столько же. Я как раз
>сегодня спрашивал, как слинковать часть либ динамически, а другую - статически.
>Молчат, партизаны :)

$ ls
makefile  test.c
$ cat makefile
test: test.c
        gcc -c test.c
        gcc -o test -lpthread *.o
$ make
gcc -c test.c
gcc -o test -lpthread *.o
test.o: In function `test_func1':
test.o(.text+0x11): undefined reference to `BZ2_bzCompress'
test.o(.text+0x13a): undefined reference to `BZ2_bzCompressEnd'
test.o(.text+0x15d): undefined reference to `BZ2_bzCompressInit'
test.o: In function `test_func2':
test.o(.text+0x617): undefined reference to `BZ2_bzDecompressInit'
test.o(.text+0xade): undefined reference to `BZ2_bzDecompress'
test.o(.text+0x110a): undefined reference to `BZ2_bzDecompressEnd'
collect2: ld returned 1 exit status
make: *** [test] Ошибка 1

$ ar x /usr/lib/libbz2.a
$ ls
blocksort.o  bzlib.o  compress.o  crctable.o  decompress.o  huffman.o  makefile  randtable.o  test.c  test.o
$ make
gcc -c test.c
gcc -o test -lpthread *.o
$ ls -l test
-rwxr-xr-x    1 qq      qq         80375 Авг 12 03:19 test
$ ldd test
        libpthread.so.0 => /lib/libpthread.so.0 (0x40022000)
        libc.so.6 => /lib/libc.so.6 (0x40073000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)


">Смахивает на libz - Добавь в конец '-lz'"
Отправлено Lamr , 12-Авг-04 12:12 
>$ ls
>makefile  test.c
>$ cat makefile
>test: test.c
>        gcc -c test.c
>        gcc -o test -lpthread
>*.o
>$ make
>gcc -c test.c
>gcc -o test -lpthread *.o
>test.o: In function `test_func1':
>test.o(.text+0x11): undefined reference to `BZ2_bzCompress'
>test.o(.text+0x13a): undefined reference to `BZ2_bzCompressEnd'
>test.o(.text+0x15d): undefined reference to `BZ2_bzCompressInit'
>test.o: In function `test_func2':
>test.o(.text+0x617): undefined reference to `BZ2_bzDecompressInit'
>test.o(.text+0xade): undefined reference to `BZ2_bzDecompress'
>test.o(.text+0x110a): undefined reference to `BZ2_bzDecompressEnd'
>collect2: ld returned 1 exit status
>make: *** [test] Ошибка 1
>
>$ ar x /usr/lib/libbz2.a
>$ ls
>blocksort.o  bzlib.o  compress.o  crctable.o  decompress.o  huffman.o  
>makefile  randtable.o  test.c  test.o
>$ make
>gcc -c test.c
>gcc -o test -lpthread *.o
>$ ls -l test
>-rwxr-xr-x    1 qq      qq
>        80375 Авг 12
>03:19 test
>$ ldd test
>        libpthread.so.0 => /lib/libpthread.so.0 (0x40022000)
>        libc.so.6 => /lib/libc.so.6 (0x40073000)
>        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

  Т.е. если распаковать архив объектных файлов и показать на эту кучу линкеру, он соберёт только с теми, которые реально используются.
  Как я сам не допёр?
  Спасибо
  Очень лаконичный и понятный ответ ;-)


">Смахивает на libz - Добавь в конец '-lz'"
Отправлено qq , 12-Авг-04 13:57 
да нет, соберет он со всеми объектниками.
а вообще, оказывается всё проще

$ ls
makefile  test.c
$ make
gcc -c test.c
gcc -o test -lpthread test.o /usr/lib/libbz2.a

причем в этом случае, он левые объектники из либ не подцепляет.