связать файлы .a и .o в GCC - PullRequest
4 голосов
/ 29 мая 2010

У меня есть две предварительно скомпилированные библиотеки: X.a и Y.a и исходный код test.cpp (без основной функции), использующий эти две библиотеки.

Я скомпилировал C ++, используя:

g++ -c test.cpp

и я получил 'test.o'.

Теперь, как я могу связать эти три вместе для создания файла .a, потому что test.cpp использует некоторую функцию в X.a и Y.a и других библиотеках GCC?

Кстати, я делаю это под Windows, используя MinGW. Могу ли я переименовать этот .a файл в .lib и использовать этот .lib в VC?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 29 мая 2010

Теперь, как я могу связать эти три вместе, чтобы создать файл .a, потому что test.cpp использует некоторую функцию в X.a и Y.a и другие библиотеки GCC?

.a - это не более чем ar архив, содержащий все объектные файлы (.o файлы)

Можно ли переименовать этот файл .a в .lib и использовать этот .lib в VC?

Да, но для этого требуется небольшая хитрость. Увидеть: http://opensees.berkeley.edu/community/viewtopic.php?t=2267

3 голосов
/ 29 мая 2010

Чтобы добавить свой объектный файл в статическую библиотеку, вы должны использовать следующую команду:

ar rcs X.a test.o

Но если вам предоставлены X.a и Y.a, я полагаю, что вы не автор X и Y, поэтому я не уверен, что вы действительно хотите присоединиться к ним!

Вы можете вместо этого связать каждый объектный файл в один исполняемый файл, но для этого вам нужна функция main!

EDIT: Также я предлагаю вам прочитать этот .

...