The OpenNET Project / Index page

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

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

"Статическая и динамическая линковка"  
Сообщение от krom email(??) on 17-Дек-07, 07:16 
Привет!

Подскажите пожалуйста - как можно собрать программу, при этом часть либ слинковать динамически, а часть включить статически?

То есть, хочется стандартные либы линковать динамически, а либы boost статически.

Есть сделать так, то линкуются все динамически..

$ cat Makefile
CXX=g++-4.2

main:  main.o
        $(CXX) -o main -l boost_program_options main.o
main.o: main.cpp
        $(CXX) -c -I. main.cpp
$
$ ldd main
        linux-gate.so.1 =>  (0xffffe000)
        libboost_program_options-gcc41-1_34_1.so.1.34.1 => /usr/lib/libboost_program_options-gcc41-1_34_1.so.1.34.1 (0xb7f0f000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e23000)
        libm.so.6 => /lib/libm.so.6 (0xb7dfd000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7df2000)
        libc.so.6 => /lib/libc.so.6 (0xb7ca5000)
        /lib/ld-linux.so.2 (0xb7f6c000)
$

Если указывать ключ static, то все статически, в том числе и куча стандартных либ..

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

 Оглавление

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


1. "Статическая и динамическая линковка"  
Сообщение от AMDmi3 (??) on 17-Дек-07, 17:15 
>Если указывать ключ static, то все статически, в том числе и куча
>стандартных либ..

Либо линковать нужные статически либы как libname.a, либо вот так:

${CXX} -Wl,-static static_libs ... -Wl,-dynamic dynamic_libs ...

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

2. "Статическая и динамическая линковка"  
Сообщение от krom (??) on 19-Дек-07, 13:05 
не помогло, или я что-то делаю криво?

$ cat Makefile
CXX=g++-4.2
main:  main.o
        $(CXX) -o main -Wl,-static -lboost_program_options main.o
main.o: main.cpp
        $(CXX) -c -I. main.cpp
$
$ make
g++-4.2 -o main -Wl,-static -lboost_program_options main.o
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
make: *** [bpp03] Error 1
$
$ locate gcc_s
/lib/libgcc_s.so.1
/usr/lib/gcc/i486-linux-gnu/3.4.6/64/libgcc_s_64.so
/usr/lib/gcc/i486-linux-gnu/3.4.6/64/libgcc_s.so
/usr/lib/gcc/i486-linux-gnu/3.4.6/libgcc_s_64.so
/usr/lib/gcc/i486-linux-gnu/3.4.6/libgcc_s.so
/usr/lib/gcc/i486-linux-gnu/4.1.2/libgcc_s.so
/usr/lib/gcc/i486-linux-gnu/4.1/libgcc_s.so
/usr/lib/gcc/i486-linux-gnu/4.2/libgcc_s.so
$

попытки указать эту либу и путь к ней ни к чему не привели.. гугл как ни странно тоже не дал внятного ответа на данную проблему :(

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

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

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




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

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