Связывание включаемых файлов в GCC - PullRequest
3 голосов
/ 30 ноября 2010

Я никогда не могу вспомнить, что печатать при компоновке включаемых файлов в GCC, на самом деле я помню только один: -lm для math.h.В данный момент меня особенно беспокоит sys/time.h.

Эта страница кое-что проясняет, но я все еще хотел бы список.

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

РЕДАКТИРОВАТЬ:

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

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

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

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

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

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

0 голосов
/ 01 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...