2010-11-30 3 views
3

Я никогда не помню, что вводить при связывании файлов include в GCC, на самом деле единственное, что я могу запомнить, это -lm для math.h. Единственное, о чем я сейчас говорю, - это sys/time.h.Ссылка на файлы в GCC

This page очищает некоторые вещи, но мне все равно нужен список.

Кто-нибудь знает о хороших списках ссылок?

EDIT:

Может быть, мой вопрос был не ясен. Я хочу знать, что мне нужно вводить в командной строке (например, -lm для математики или -lpthread для pthread) для различных библиотек, которые мне могут понадобиться для связи при создании программ на C.

ответ

0

Я не уверен, что понимаю ваш вопрос, но -lm не является опцией ld , -l является опцией и -lx ссылками libx.a (или .so, это зависит). вы можете посмотреть руководство ld для полного списка опций.
Я думаю, что все другие стандартные, кроме математики библиотеки включены в libc.so (.a) (-lc)

+0

`libcrypt`,` libdl`, `libpthread`,` libresolv` и `librt` содержат более стандартные функции C/POSIX, которые не находятся в` libc` и `libm`. Многие люди считали бы `libz` также стандартной системной библиотекой. – ephemient 2010-11-30 22:52:55

1

Функциональные возможности, предоставляемые в <sys/time.h> реализован в libc.so (библиотека C). Вам не нужно связывать что-либо еще, поскольку gcc автоматически связывается с libc.so. «Связывание включенных файлов» отсутствует, скорее вы связываетесь с библиотеками, которые содержат символы, определенные кодом.

Флаг -l является одним из GCC's linker options и используется для указания дополнительных библиотек для связи.

редактировать, потому что мой НКУ выполнял оптимизаций на мой исходный код во время компиляции

Кроме того, информация в этой связи немного устарел - вам не нужно явно ссылку libm (что -l m или -lm делает) в современном GCC.

+0

Ничего себе, когда это произошло? http://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c/1033940#1033940 Я уверен, что это было точно год назад ... – ephemient 2010-11-30 21:49:58

Смежные вопросы