Ошибка линковки, collect2: ld returned 1 exit status |
Здравствуйте, гость ( Вход | Регистрация )
Ошибка линковки, collect2: ld returned 1 exit status |
Shm |
29.4.2011, 20:57
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 29.4.2011 Пользователь №: 2644 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте.
Кому не интересны мои мучения с библиотекой и тернистый путь проб и ошибок могут перейти сразу вниз и помочь мне сразу(заранее спасибо, может я тоже вам пригожусь ) С boost начал копаться недавно, и вообще я полный новичок в этих вопросах. Хотелось запрограммировать кое-что используя потоки, а у меня Eclipse(wascana) стоит. как затсавить проги компилится с include <thread> я не понял , и так и сяк пытался и подсунуть компилятору -std=c++0x -lpthread ... в общем полный профан я в этом деле - не получилось. решил boost попробовать там как я понял в boost'e , как в африке есть всё, в том числе и поддержка мультимпоточного всяко-разного .... всё началось когда я попытался скомпилировать bjam - мой cl.exe не хотел его компилировать и падал , пришлось поставить 10 Visual Studio (Которая потребовала сервиспак на виндовс 3 , который придётся ещё регистрировать , а регистрацию я чувствую не пройду...) наконец я поставил эти штуки и bjam смог собраться. Но он упорно не хотел собирать библиотеки под MINGW .... Начитавшись форумов , я поставил cygwin ?rjnjhsq gjxtvenj c]tk e vtyz dc Упс нельзя редактировать ? случайно ентер хзадел или кнртл пробел в общем отправилось. продолжаю...поставил cygwin , который съел почему то всё место на диске с.. я видимо нажал инсталл всё... а удалять он ничего не хотел а только всё качал что-то . кароче прикомпиляции boost у меня закончился диск . пришлось перставлять cygwin на другой диск. (Теперь у меня есть папка c:\cygwin которую до сих пор не могу удалить, да фиг с ней потом) надо сказать что bjam без параметров что то долго компилял (видимо под поставленную VS что радовало.) Потом танцы с бубном вокруг переменной PATH, тк я не понял почему ничего не ставится, и не понял почему поставилось видимо gcc из директории cygwin/bin не умеет ничего собирать под винду, а надо было брать c:/migw/bin/gcc.exe и он вроде чегото собрал, вроде ещё рестартить комп тоже пондобилось . после переставок cygwin и mingw Короче моё наблюдение такое в директории path путь c:/migw/bin долже быть раньше чем e:/cyqwin/bin короче ура! 3 дня танцев с бубном и чтения странного привели меня что в директории ........ c:\Boost\lib\libboost_unit_test_framework-mgw45-mt-1_46_1.a c:\Boost\lib\libboost_thread-mgw45-mt-d-1_46_1.a c:\Boost\lib\libboost_thread-mgw45-mt-1_46_1.a ........ появились какие-то файлы ;-) но пример откопанный откуда.то не собирается может я не правильно понимаю суть (я переименовал c:\Boost\lib\libboost_thread-mgw45-mt-d-1_46_1.a->c:\Boost\lib\libboost_thread.a ато там писали про много слешей в путях, я уж думал ещё какие символы являются разделителями параметров случайно например тире, поэтому и переименовал)? вот что пишется при сбоке : g++ -IC:\cpp\boost_1_46_1 -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Boost_Thread.o ..\src\Boost_Thread.cpp g++ -LC:\Boost\lib -oBoost_Thread.exe src\Boost_Thread.o -llibboost_thread c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -llibboost_thread collect2: ld returned 1 exit status Build error occurred, build is stopped Time consumed: 453 ms. ...... Не посововетуте я уже и 5 раз прочитал про параметр -l и -L для gcc и пробовал тоже самое у пингвина, тьфу у cygwin сделать Неплучается, тот же эффект линковщик не видит файл библиотекой xxx.a (или в другом проблема?) |
|
|
Iron Bug |
1.5.2011, 0:30
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
значит, что-то не так делал. буст спокойно собирается любыми студиями. он проверен для
Цитата Windows: * Visual C++: 7.1, 8.0, 9.0 and 10.0. * GCC, mingw: 4.4.0. см. доки на последнюю версию: http://www.boost.org/users/history/version_1_46_1.htm bjam также без проблем собирается. причём он сам собирается при запуске bootstrap'а и дополнительных усилий вообще не требуется. разве что указать компилятор, если он установлен как-то слишком нестандартно, но это крайняя редкость в венде. студию он находит сам без проблем и ему абсолютно пофиг на её версию. читай руководство по сборке буста под вендой: http://www.boost.org/doc/libs/1_46_1/more/...ed/windows.html про cygwin: -lboost_thread -L<путь до библиотеки> Сообщение отредактировал Iron Bug - 1.5.2011, 0:40 |
|
|
Shm |
1.5.2011, 2:53
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 29.4.2011 Пользователь №: 2644 Спасибо сказали: 0 раз(а) Репутация: 0 |
Собрал по твоему совету из другой ветки
всё собралось вроде как и появились файлики Раскрывающийся текст d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\threading-multi\win32\tss_pe.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\threading-multi\win32\tss_dll.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\threading-multi\win32\thread.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\threading-multi\libboost_thread-mt.dll.a d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\threading-multi\libboost_thread-mt.dll d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\threading-multi\win32\tss_pe.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\threading-multi\win32\tss_dll.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\threading-multi\win32\thread.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\threading-multi\libboost_thread-mt.a d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\runtime-link-static\threading-multi\win32\tss_pe.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\runtime-link-static\threading-multi\win32\tss_dll.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\runtime-link-static\threading-multi\win32\thread.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\runtime-link-static\threading-multi\libboost_thread-mt-s.a d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\threading-multi\win32\tss_pe.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\threading-multi\win32\tss_dll.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\threading-multi\win32\thread.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\threading-multi\libboost_thread-mt-d.dll.a d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\threading-multi\libboost_thread-mt-d.dll d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\threading-multi\win32\tss_pe.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\threading-multi\win32\tss_dll.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\threading-multi\win32\thread.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\threading-multi\libboost_thread-mt-d.a d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\runtime-link-static\threading-multi\win32\tss_pe.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\runtime-link-static\threading-multi\win32\tss_dll.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\runtime-link-static\threading-multi\win32\thread.o d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\runtime-link-static\threading-multi\libboost_thread-mt-sd.a пытаюсь собрать с полученной библиотекой файл ...boost_1_46_1\libs\thread\tutorial\helloworld.cpp Раскрывающийся текст // Copyright © 2001-2003 // William E. Kempf // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include <boost/thread/thread.hpp> #include <iostream> void helloworld() { std::cout << "Hello World!" << std::endl; } int main() { boost::thread thrd(&helloworld); thrd.join(); } этими просто тупо открываю bat файл и пробую так:
не собирает (collect2: ld returned 1 exit status) так:
не собирает (C:\MinGW\bin\ld.exe: cannot find -lthread.a) так: (C:\MinGW\bin\ld.exe: cannot find -llibthread.a) ладно может попробывать подсунуть "obj" файлы
не получается куча ошибок типа , d:\Temp\BoostBuild\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\debug\link-static\runtime-link-static\threading-multi\win32\thread.o:c:\cpp\boost_1_46_1/./boost/thread/win32/once.hpp:178: undefined reference to `__cxa_rethrow' ... в общем что то я не понимаю что делать уже мозг свернулся и не понимаю где посмотреть. у меня была идея подсунуть файлы из других директорий пойду ка я посплю... |
|
|
Iron Bug |
1.5.2011, 10:54
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
во-перых, судя по строке сборки, буст будет весь собран в \Boost\include\boost-1_46_1\stage\lib и из темпа его выковыривать смысла нет. во-вторых, проверь для начала без буста, что у тебя pthreads работает и все нужные пути для MinGW настроены.
ошибка с rethrow - это ошибка обработки исключений. не выствлен флаг и используются исключения. напиши сначала простой пример без исключений и проверь, что у тебя мингв его собирает. |
|
|
Текстовая версия | Сейчас: 22.12.2024, 8:57 |