Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.05.2019, 13:46
|
|||
---|---|---|---|
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
Добрый день. Есть крупный проект, написанный в основном на "старых" c98. Недавно один большой модуль, экранированный небольшим интерфейсом, перевели на с++11, сборка в .SO. В числе прочего был переход с нативных pthread на "стандартизованный" std::thread. pthread в этом модуле использовался и раньше, интерфейс модуля не меняли. Многие другие проекты линковали этот .SO без проблем, не имея дополнительных ключей вроде -pthread или -ldl. Теперь, как только модуль переведен на std::thread все собирается, но при попытке создать экземпляр std::thread вылетает Код: plaintext 1. 2. 3.
В принципе, это обходится добавлением ключей -pthread -Wl,--no-as-needed к каждому проекту, который подхватывает .SO, но по-моему это как-то неправильно прям. Нет ли каких-то способов статически запечатать pthread в модуль, чтобы другим частям не требовались эти ключи (как это было раньше) ? =//= ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 14:39
|
|||
---|---|---|---|
|
|||
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
AklinВ принципе, это обходится добавлением ключей -pthread -Wl,--no-as-needed к каждому проекту, который подхватывает .SO Насколько я знаю, эти ключи можно (и нужно) указать при линковке самой библиотеки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 17:23
|
|||
---|---|---|---|
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
AklinВ принципе, это обходится добавлением ключей -pthread -Wl,--no-as-needed к каждому проекту, который подхватывает .SO, но по-моему это как-то неправильно прям. Нет ли каких-то способов статически запечатать pthread в модуль, чтобы другим частям не требовались эти ключи (как это было раньше) ? На GCC это правильно. Учти, что -pthread -- это не -lpthread. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.05.2019, 23:00
|
|||
---|---|---|---|
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
Мне интереснг вот что. Раньше модуль использовал птреды и проблем не было, а другие компоненты могли не указывать этот ключ -pthread, все линковалось. А теперт выходит что птредами пользуется libc, а значит при ее линковке приходится подтягивать этот ключ. Маразм. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.05.2019, 00:54
|
|||
---|---|---|---|
|
|||
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
AklinА теперт выходит что птредами пользуется libc При чём тут libc если у тебя исключение при использовании С++ STL?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.05.2019, 14:05
|
|||
---|---|---|---|
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
Dimitry SibiryakovПри чём тут libc если у тебя исключение при использовании С++ STL?.. Исключение происходит на строчке, где идет аллокация std::thread. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.05.2019, 17:24
|
|||
---|---|---|---|
|
|||
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
AklinИсключение происходит на строчке, где идет аллокация std::thread. И? Дальше по стэку пройти не судьба? Я же уже сказал: библиотека, использующая потоки, должна собираться с -pthread. Просто потому, что это единственные возможные потоки на Линухе. Тогда ей будет сугубо всё равно из какого приложения она используется. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.05.2019, 00:38
|
|||
---|---|---|---|
|
|||
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
авторНет ли каких-то способов статически запечатать pthread в модуль, чтобы другим частям не требовались эти ключи (как это было раньше) ?проблема в том, что кто-то должен инициализировать плюсовой рантайм + самая большая проблема в оптимизаторе, плюсы снимают все гарантии, что это будет работать корректно и оптимизатор что нибудь не наоптимизирует ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.06.2019, 12:38
|
|||
---|---|---|---|
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
Dimitry SibiryakovAklin И? Дальше по стэку пройти не судьба? thread = new std::thread(...) Куда уж дальше? Нет желания ковыряться в исходниках стандарта... Dimitry SibiryakovЯ же уже сказал: библиотека, использующая потоки, должна собираться с -pthread. Просто потому, что это единственные возможные потоки на Линухе. Тогда ей будет сугубо всё равно из какого приложения она используется.Не помогает. Приходится собирать приложение, которое может залинковать эту библиотеку. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.06.2019, 12:47
|
|||
---|---|---|---|
|
|||
c++11, std::thread, pthread и чудеса линковки |
|||
#18+
AklinНет желания ковыряться в исходниках стандарта... С одной стороны это правильно, потому что после такого хочется это развидеть и никогда не пользоваться этим дерьмищем. С другой стороны - полезно для понимания почему никогда не стоит пользоваться этим дерьмищем. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=57&mobile=1&tid=2017610]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 367ms |
0 / 0 |