2015-06-24 2 views
0

Я пытаюсь выполнить файл cpp с именем «palindrome.cpp» с помощью терминала на моем Macbook. Этот файл cpp использует внешнюю библиотеку с именем «libStanfordCPPLib.a», которая находится под «DIRECTORY TO CPP FILE/StanfordCPPLib», а также соответствующие файлы заголовков этой библиотеки находятся в этой папке «StanfordCPPLib».
Вы можете увидеть структуру папок на этом скриншоте: enter image description hereссылка на внешнюю статическую библиотеку по g ++

Мой код для компиляции этого исходного кода:

g++-4.8 -Wall -I/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib -L/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib palindrome.cpp libStanfordCPPLib.a 

Как я понимаю, -I обозначает путь к папке, где существуют файлы заголовков и -L обозначает путь к каталогу, в котором существует библиотека (.a файл). Вот почему оба -I и -L - это один и тот же путь к каталогам "/ Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib".

Однако выполнение этой команды возвращает ошибку: «libStanfordCPPLib.a: Нет такого файла или каталога». Как показано на скриншоте: enter image description here

Может ли кто-нибудь понять, почему это происходит? Благодарю.

+0

попробуйте запустить ту же команду с удалением части «Lib» от имени библиотеки «StanfordCPPLib.a» или как «StanfordCPP.a» .. потому что, как я знать, что компоновщик будет префикс и постфишировать имя вашей библиотеки с помощью lib, прежде чем искать его. –

+0

Нет, он все еще не может работать. Сообщение об ошибке «error: StanfordCPP.a: Нет такого файла или каталога» – LeonloveKaren

+0

Вы пытались использовать StanfordCPPLib.a? –

ответ

0

Попробуйте это, используя -lStanfordCPPLib:

g++-4.8 -Wall -I/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib -L/Users/myName/Downloads/CS106B/palindrome/StanfordCPPLib palindrome.cpp -lStanfordCPPLib 
+0

, который он может скомпилировать сейчас. Однако я получил предупреждение «игнорирование файла /Users/lihang/Downloads/CS106B/palindrome/StanfordCPPLib/libStanfordCPPLib.a, файл был создан для архива, который не связан с архитектурой (x86_64):/Users/lihang/Downloads/CS106B /palindrome/StanfordCPPLib/libStanfordCPPLib.a «Я выясню это. Большое спасибо. – LeonloveKaren

+0

Предупреждение говорит, что библиотека была построена для x86 (32-битной) машины. Ваша машина 64 бит и, следовательно, не может использовать двоичный файл, который был скомпилирован для 32-битного. Вы либо скомпилируете библиотеку самостоятельно, либо получаете правильный исполняемый файл. – bendervader

+0

Это проводное соединение, поэтому я могу запустить эту программу на своем Xcode. – LeonloveKaren

Смежные вопросы