Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=10648424&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 12:51:20 2016
Кодировка: Windows-1251
Зачем нужны static libraries? - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
Fj_
Carpal Tunnel

Рег.: 12.09.2004
Сообщений: 8795
Рейтинг: 3287
  Зачем нужны static libraries?
      23.12.2011 18:43
 

...если есть object files? То есть, если мне влом делать статическую библиотеку из одного исходника, и я вместо этого прям объектный файл линкую, я не наступлю на какие-нибудь ужасные грабли между делом? Интересует в контексте как винды, так и луниксов.



The data is the error (c)IIS FTP Server.
monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: Зачем нужны static libraries? [re: Fj_]
      23.12.2011 18:52
1

В линуксе то, что получается из одного исходника, и так распространяется как объектный файл, всякие crt*.o. Смысл .a в том, что она распространяется как один файл, а при линковке из нее копируются только нужные объектники (см. также -ffunction-sections, -fdata-sections).



#
gadfatherАдминистратор
Carpal Tunnel

Рег.: 05.11.2003
Сообщений: 47302
Из: пл. Гагарина
Рейтинг: 16961
  Re: Зачем нужны static libraries? [re: Fj_]
      23.12.2011 18:57
2

насколько я помню, статическая библиотека в линуксе - всего лишь обычный архив из объектников



You can't always get what you want
__ka
Nobrainer

Рег.: 20.11.2004
Сообщений: 533
Рейтинг: 45
  Re: Зачем нужны static libraries? [re: Fj_]
      23.12.2011 18:59
 

Конкретно в луниксах, если верить man-pages ( http://linux.die.net/man/1/ar http://linux.die.net/man/1/ar, http://www.freebsd.org/cgi/man.cgi?ar ) сборка в архив позволяет ускорить процесс линковки благодаря сборке символов из объектников в единую таблицу в архиве.



#warning "You should include <sys/socket.h>. This time I will do it for you."
Leo

Рег.: 06.12.2002
Сообщений: 4547
Из: 51.5252 N, 0.1322 W
Рейтинг: 548
  Re: Зачем нужны static libraries? [re: Fj_]
      24.12.2011 11:30
 

Тупо удобство. Чтобы не думать, какие объектные файлы линковать надо. Если ты линкуешь файлы напрямую - они линкуются всегда, хоть используешь ты код из них, хоть нет. Если через статическую библиотеку - автоматом линкуются только те объектные файлы, из которых используется код.

На досе/винде, насколько помню, микрософтовскии линкеры чреез библиотеки умели еще и объектные файлы на куски дербанить: типа если у тебя в одном объектом файле сидит две функции, а прога использует только одну, то при линковке через библиотеку не весь код попадает в результат.



// Leo
horror
гонобобель

Рег.: 30.09.2002
Сообщений: 3784
Рейтинг: 2137
  Re: Зачем нужны static libraries? [re: Leo]
      24.12.2011 11:37
 

Quote:

Если ты линкуешь файлы напрямую - они линкуются всегда, хоть используешь ты код из них, хоть нет.



насколько мне известно, они линкуются по тем же правилам, что и подобъектники в статических библиотеках (подразумевается дефолтное поведение дефолтных компиляторов VS + gcc): то бишь не линкуются, если из них ничего не используется

Leo

Рег.: 06.12.2002
Сообщений: 4547
Из: 51.5252 N, 0.1322 W
Рейтинг: 548
  Re: Зачем нужны static libraries? [re: horror]
      24.12.2011 12:03
7

Нифига. Это ж проверяется элементарно:
code:
$ cat foo.c void foo() { static char *x = "hello"; } $ cat bar.c void bar() { static char* x = "world"; } $ cat a.c extern foo(); extern bar(); int main(void) { foo(); } $ gcc -c *.c $ gcc a.o foo.o bar.o $ strings a.out | egrep 'hello|world' hello world $ ar r libxxx.a foo.o bar.o ar: creating libxxx.a $ gcc a.o libxxx.a $ strings a.out | egrep 'hello|world' hello




// Leo
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
1 зарегистрированных и 1 анонимных пользователей просматривают этот форум.

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

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в