Форум программистов, компьютерный форум, киберфорум
Наши страницы
Boost C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
kravam
быдлокодер
1711 / 898 / 105
Регистрация: 04.06.2008
Сообщений: 5,585
1

Какой именно из файлов *.a прилинковывать если их у меня 23 штуки?

13.11.2014, 12:42. Просмотров 600. Ответов 6
Метки нет (Все метки)

И главное все корректные. Но всё по порядку.

++++++++++++++++++++++++++++++++++=

Друзья! У меня mingw, тут качнул boost, по этой инструкции установил.

Компилю такой файл:

C++
1
2
3
4
5
#include <boost/regex.hpp>
int main()
{
    boost::regex pat("stroka_neponatno_zachem");
}
Естессно, вагон и маленькая тележка ошибок линкёра- не может найти функции; где искать соответствующие *.a файлы? С помощью этой моей проги я их нашёл, оказалось 24 *.a файла, вот они:

список *.a файлов, выбирай любой не ошибёшься!
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\debug\libboost_regex-mgw46-d-1_57.dll.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\debug\link-static\runtime-link-static\libboost_regex-mgw46-sd-1_57.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\debug\link-static\runtime-link-static\threading-multi\libboost_regex-mgw46-mt-sd-1_57.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\debug\link-static\threading-multi\libboost_regex-mgw46-mt-d-1_57.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\debug\threading-multi\libboost_regex-mgw46-mt-d-1_57.dll.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\release\libboost_regex-mgw46-1_57.dll.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\release\link-static\libboost_regex-mgw46-1_57.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\release\link-static\runtime-link-static\libboost_regex-mgw46-s-1_57.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\release\link-static\runtime-link-static\threading-multi\lbboost_regex-mgw46-mt-s-1_57.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\release\link-static\threading-multi\libboost_regex-mgw46-mt-1_57.a
boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\release\threading-multi\libboost_regex-mgw46-mt-1_57.dll.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-1_57.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-1_57.dll.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-d-1_57.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-d-1_57.dll.a
boost_1_57_0\stage\lib\liboost_regex-mgw46-mt-1_57.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-mt-1_57.dll.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-mt-d-1_57.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-mt-d-1_57.dll.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-mt-s-1_57.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-mt-sd-1_57.a
boost_1_57_0\stage\lib\liblboost_regex-mgw46-s-1_57.a
boost_1_57_0\stage\lib\libboost_regex-mgw46-sd-1_57.a

(директорию build_temp я указал тут, когда собирал boost:

Bash
1
b2 --build-dir=..\..\build_temp toolset=toolset-name --build-type=complete
До этой команды, кстати, в папке boost_1_57_0 не было ни одного файла *.a, я проверял)


В общем, с каким файлом не слинкуешь- всё линкуется. Ну например:
Bash
1
2
3
g++.exe "main.cpp" -o "main.exe" -I"E:\Dev_Cpp_nomingw\boost_1_57_0"   -L"E:\Dev_Cpp_nomingw\boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\debug" -lboost_regex-mgw46-d-1_57.dll
 
g++.exe "main.cpp" -o "main.exe" -I"E:\Dev_Cpp_nomingw\boost_1_57_0"    -L"E:\Dev_Cpp_nomingw\boost_1_57_0\build_temp\boost\bin.v2\libs\regex\build\gcc-mingw-4.6.2\debug\link-static" -lboost_regex-mgw46-d-1_57
И таких корректных командных строк по числу файлов. Не знаю, какой выбрать. А какой выбрать правильно? Спасибо, кто откликнется.

Добавлено через 9 минут
Кстати, файлы *a разные по содержанию, я две пары меж собой сравнил, остальные не стал сравнивать.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2014, 12:42
Ответы с готовыми решениями:

Скажите пожалуйста, если у меня процессор AMD а видюха Nvidia, если я поставлю видюху от AMD Radeon то будет какой-то прирост производительности(если
Скажите пожалуйста, если у меня процессор AMD а видюха Nvidia, если я поставлю видюху от AMD Radeon...

Нужно ли менять корпус, если да, то на какой именно?
Здравствуйте. Посоветуйте пожалуйста корпус максимально на вырост. Красота не важна. Мой корпус...

Автосортировка файлов - перемещение файлов в подпапки по 4 штуки
Уважаемые программисты, нужна Ваша помощь! Необходимо с помощью bat-файла автоматизировать...

какими методами меня будут пытаться взломать и какой вред мне смогут нанести если на моем сайте нет никаких полей разрешающих загружать что-то...
и снова доброе время суток. скачал денвер. настроил. открыл доступ к своим сайтам из интернета....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
ForEveR
В астрале
Эксперт С++
8002 / 4760 / 653
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.11.2014, 13:20 2
kravam, Смотрим на то что в stage, а не в build_temp. Объяснение имен: http://www.boost.org/doc/libs/1_57_0...library-naming
0
kravam
быдлокодер
1711 / 898 / 105
Регистрация: 04.06.2008
Сообщений: 5,585
13.11.2014, 15:13  [ТС] 3
Без вопросов не обойтись:

-mt
Threading tag: indicates that the library was built with multithreading support enabled. Libraries built without multithreading support can be identified by the absence of -mt.
Что это значит? То есть я так понимаю, что дав команду

b2 --build-dir=..\..\build_temp toolset=toolset-name --build-type=complete
мне построились ВСЕ возможные варианты ВСЕГО. То есть запускался процесс и он кропал мне файл libboost_regex-mgw46-1_57.a, потом запускался другой МНОГОПОТОЧНЫЙ процесс и он кропал мне файл *.a

Если я прав, остаётся только развести руками- какая мне разница, одним потоком сделан файл или несколькими? Он должен остаться файлом *.a и нести своё предназначение независимо от вариантов сборки, прав ли я?
0
ForEveR
В астрале
Эксперт С++
8002 / 4760 / 653
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.11.2014, 16:54 4
kravam, Построились все варианты, верно. Второе неверно. Отсюда: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html
threading single,multi Cause the produced binaries to be thread-safe. This requires proper support in the source code itself.
mt == thread-safe.
Подробнее можно прочесть тут: http://stackoverflow.com/questions/2...ompiling-boost
0
kravam
быдлокодер
1711 / 898 / 105
Регистрация: 04.06.2008
Сообщений: 5,585
13.11.2014, 22:40  [ТС] 5
Ну я в английском не силён, но я предполагал, в принципе, что если использовать mt, то это для многопоточности, а если без mt, то для однопоточности;

Вопрос такой- в чём прикол-то использовать libboost_regex-mgw46-1_57.a, если рядом лежит libboost_regex-mgw46-mt-1_57.a?

Сказал же дядька по ссылке:

As a final point, it's worth noting that Boost.Thread is implicitly always compiled with threading=multi - since using boost's multithreaded classes is an implicit hint that multiple threads are present. Using Boost.Thread without multithreaded support would be nonsensical.
Либо это путаница нас, скромных пользователей, чтобы мы лишний раз путались, либо в некоторых случаях libboost_regex-mgw46-1_57.a подходит, а libboost_regex-mgw46-mt-1_57.a нет. Делать-то чего? Всегда использовать libboost_regex-mgw46-mt-1_57.a?
0
ForEveR
В астрале
Эксперт С++
8002 / 4760 / 653
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
14.11.2014, 10:38 6
kravam, Cкорее да. Я всегда строю boost используя лишь threading=multi и мне этого достаточно.
0
Evg
Эксперт CАвтор FAQ
19638 / 7330 / 551
Регистрация: 30.03.2009
Сообщений: 20,505
Записей в блоге: 30
15.11.2014, 16:23 7
Если в gcc подать опцию -Wl,-t то он в линкер передаст опцию -t, а тот в свою очередь напечатает все файлы, которые он использовал

Добавлено через 42 секунды
Что-то я не так вопрос понял, ну да ладно
0
15.11.2014, 16:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru