Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Статическая линковка системных библиотек 
:(
    Опции темы
Torsten
Дата 18.12.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 10.6.2008
Где: Pskov

Репутация: нет
Всего: 7



Интересует каким образом можно статически слинковать с приложением такие библиотеки, как :
* linux-gate (это кстати вообще что ? первый раз ее увидел в ldd, хотя в опциях компиляции ее нигде не указано)
* libm
* libc
* ld-linux
--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
chaos
Дата 19.12.2008, 12:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 3
Всего: 44



Код

chaos@penguin:~/Work/Arm/App/Test$ cat > test.c
#include <stdio.h>

int main()
{
    printf("Hello world!!!\n");
    return 0;
}
^Z
[1]+  Stopped                 cat > test.c

chaos@penguin:~/Work/Arm/App/Test$ gcc test.c 

chaos@penguin:~/Work/Arm/App/Test$ ./a.out 
Hello world!!!

chaos@penguin:~/Work/Arm/App/Test$ ldd a.out 
    linux-gate.so.1 =>  (0xb7f1b000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d8e000)
    /lib/ld-linux.so.2 (0xb7f01000)

chaos@penguin:~/Work/Arm/App/Test$ ls -l | grep a.out
-rwxr-xr-x 1 chaos chaos     9040 2008-12-19 14:25 a.out

chaos@penguin:~/Work/Arm/App/Test$ gcc test.c -static

chaos@penguin:~/Work/Arm/App/Test$ ldd a.out 
    not a dynamic executable

chaos@penguin:~/Work/Arm/App/Test$ ls -l | grep a.out
-rwxr-xr-x 1 chaos chaos   579275 2008-12-19 14:25 a.out

chaos@penguin:~/Work/Arm/App/Test$ ./a.out 
Hello world!!!

PM WWW   Вверх
wertik
Дата 4.3.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Наверное он имел в виду это:

root@nout /opt/test # gcc main.c -I/usr/include/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto
main.c: В функции 'main'
main.c:3: предупреждение: return type of 'main' is not 'int'

root@nout /opt/test # ldd a.out 
    linux-gate.so.1 =>  (0xffffe000)
    libmysqlclient.so.15 => /usr/lib/libmysqlclient.so.15 (0xb7e0c000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb7df8000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7dc6000)
    libnsl.so.1 => /lib/libnsl.so.1 (0xb7dae000)
    libm.so.6 => /lib/libm.so.6 (0xb7d88000)
    libssl.so.0 => /usr/lib/libssl.so.0 (0xb7d47000)
    libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0xb7c09000)
    libc.so.6 => /lib/libc.so.6 (0xb7abd000)
    /lib/ld-linux.so.2 (0xb7f70000)
    libdl.so.2 => /lib/libdl.so.2 (0xb7ab9000)
root@nout /opt/test # 



PM MAIL WWW ICQ   Вверх
xvr
Дата 4.3.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(Torsten @ 18.12.2008,  19:16)
Интересует каким образом можно статически слинковать с приложением такие библиотеки, как :
* linux-gate (это кстати вообще что ? первый раз ее увидел в ldd, хотя в опциях компиляции ее нигде не указано)
* libm
* libc
* ld-linux

Последнюю никак - это динамический линкер системы  smile (Он сам уберется при -static)


PM MAIL   Вверх
wertik
Дата 4.3.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Вот так:

gcc main.c -lm -lc
main.c: В функции 'main'
main.c:2: предупреждение: return type of 'main' is not 'int'
root@nout /opt/test # ldd ./a.out       
    linux-gate.so.1 =>  (0xffffe000)
    libm.so.6 => /lib/libm.so.6 (0xb7ef3000)
    libc.so.6 => /lib/libc.so.6 (0xb7da7000)
    /lib/ld-linux.so.2 (0xb7f3a000)


PM MAIL WWW ICQ   Вверх
xvr
Дата 4.3.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Кста, нашел что такое linux-gate.so:
Цитата

From time to time this is a cause of befuddlement and frustration for users as they go searching for a non-existent system file. You can confidently tell users on this futile quest that there's not supposed to be a linux-gate.so.1 file present anywhere on the file system; it's a virtual DSO, a shared object exposed by the kernel at a fixed address in every process' memory

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.