Как я могу связать с моей собственной библиотекой pthread - PullRequest
2 голосов
/ 10 марта 2012

Я хочу внести некоторые изменения в библиотеку pthread, используемую для моей программы.Вот почему я хочу связать свою собственную измененную библиотеку pthread.Я могу взять исходный код в glibc для pthread, изменить его и использовать его для своих программ.

Обычно вы используете флаг -pthread для связи с исходной библиотекой pthread.Как мне указать в моем make-файле ссылку на мою собственную библиотеку.

Ответы [ 4 ]

4 голосов
/ 10 марта 2012

Просто используйте опцию -L, чтобы указать каталог, в котором находится ваша пользовательская библиотека, и опцию -l, чтобы указать имя вашей библиотеки.Например:

-L/root/x/mylib -lmypthread

В этом случае ваше имя библиотеки должно быть libmypthread.so

Более подробную информацию смотрите в http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

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

export LD_LIBRARY_PATH = $(LD_LIBRARY_PATH):/root/x/mylib
2 голосов
/ 10 марта 2012

Не используйте -pthread. Это недокументированная опция GCC, вероятно, для совместимости с некоторыми другими (Solaris?) Компиляторами.

Определение -D_REENTRANT, которое оно разрешает -pthread, совершенно не нужно в glibc; ни один из заголовков не зависит от этого макроса для безопасности потока. (Последний из таких механизмов был удален из заголовков glibc в 1998 году!) Достаточно просто связать -lpthread, чтобы переключить функции glibc в поточно-безопасный режим, и -lpthread можно заменить вашей собственной библиотекой, как говорится в другом ответе. .

2 голосов
/ 10 марта 2012

-pthread эквивалентно -lpthread -D_REENTRANT с gcc / glibc. Вы можете сделать то же самое, но с другим аргументом ссылки (-lname-of-library).

0 голосов
/ 10 марта 2012

Скомпилируйте библиотеку под другим именем, например, libmypthread.so и поместите ее в один из каталогов, содержащихся в переменной среды LD_LIBRARY_PATH (или добавьте новый каталог).Теперь вы можете использовать -lmypthread для ссылки на вашу библиотеку.

...