Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
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, 13:46 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
AklinВ принципе, это обходится добавлением ключей -pthread -Wl,--no-as-needed к каждому проекту, который подхватывает .SO Насколько я знаю, эти ключи можно (и нужно) указать при линковке самой библиотеки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 14:39 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
AklinВ принципе, это обходится добавлением ключей -pthread -Wl,--no-as-needed к каждому проекту, который подхватывает .SO, но по-моему это как-то неправильно прям. Нет ли каких-то способов статически запечатать pthread в модуль, чтобы другим частям не требовались эти ключи (как это было раньше) ? На GCC это правильно. Учти, что -pthread -- это не -lpthread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 17:23 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
Мне интереснг вот что. Раньше модуль использовал птреды и проблем не было, а другие компоненты могли не указывать этот ключ -pthread, все линковалось. А теперт выходит что птредами пользуется libc, а значит при ее линковке приходится подтягивать этот ключ. Маразм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2019, 23:00 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
AklinА теперт выходит что птредами пользуется libc При чём тут libc если у тебя исключение при использовании С++ STL?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 00:54 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПри чём тут libc если у тебя исключение при использовании С++ STL?.. Исключение происходит на строчке, где идет аллокация std::thread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 14:05 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
AklinИсключение происходит на строчке, где идет аллокация std::thread. И? Дальше по стэку пройти не судьба? Я же уже сказал: библиотека, использующая потоки, должна собираться с -pthread. Просто потому, что это единственные возможные потоки на Линухе. Тогда ей будет сугубо всё равно из какого приложения она используется. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2019, 17:24 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
авторНет ли каких-то способов статически запечатать pthread в модуль, чтобы другим частям не требовались эти ключи (как это было раньше) ?проблема в том, что кто-то должен инициализировать плюсовой рантайм + самая большая проблема в оптимизаторе, плюсы снимают все гарантии, что это будет работать корректно и оптимизатор что нибудь не наоптимизирует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2019, 00:38 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAklin И? Дальше по стэку пройти не судьба? thread = new std::thread(...) Куда уж дальше? Нет желания ковыряться в исходниках стандарта... Dimitry SibiryakovЯ же уже сказал: библиотека, использующая потоки, должна собираться с -pthread. Просто потому, что это единственные возможные потоки на Линухе. Тогда ей будет сугубо всё равно из какого приложения она используется.Не помогает. Приходится собирать приложение, которое может залинковать эту библиотеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2019, 12:38 |
|
||
|
c++11, std::thread, pthread и чудеса линковки
|
|||
|---|---|---|---|
|
#18+
AklinНет желания ковыряться в исходниках стандарта... С одной стороны это правильно, потому что после такого хочется это развидеть и никогда не пользоваться этим дерьмищем. С другой стороны - полезно для понимания почему никогда не стоит пользоваться этим дерьмищем. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2019, 12:47 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=13&tid=2017610]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 138ms |

| 0 / 0 |
