g ++ не может найти установленную библиотеку

Я пытаюсь скомпилировать и пример файла, который нуждается в необходимой библиотеке libmusicxml.

Я скомпилировал библиотеку, как они сказали (cmake, make, make install), и она сделала и установила несколько файлов:

Install the project...
-- Install configuration: ""-- Installing: /usr/local/lib/libmusicxml2.so.3.00
-- Installing: /usr/local/lib/libmusicxml2.so
-- Installing: /usr/local/include/libmusicxml/musicxmlfactory.h
-- Installing: /usr/local/include/libmusicxml/sortvisitor.h
-- Installing: /usr/local/include/libmusicxml/xmlreader.h
... etc

Теперь я хочу скомпилировать один из их примеров файлов, поэтому я запускаю g ++ filename.cpp, и он дает мне следующую ошибку:

libmusicxml.h: No such file or directory

Значит ли это, что он не видит библиотеку в / usr / local? Могу ли я указать это где-нибудь? Установить путь или что-то?

—ОБНОВИТЬ

Я удостоверился, что у меня последняя версия библиотеки libmusicxml от Вот и сделал то же самое (cmake с последующим make).

Когда я иду к примерам образцов и пытаюсь их создать (с предоставленным файлом make, который работает по словам разработчика), он не хочет делать это:

dorien@XP:~/bin/libmusicxml-master/samples$ make
gcc -g -O3 -Wall -Wuninitialized -I../src/elements -I../src/interface -I../src/files -I../src/lib -I../src/parser -I../src/visitors -I../src/guido -I../src/operations countnotes.cpp ../libmusicxml2.a -lstdc++ -o countnotes
gcc: error: ../libmusicxml2.a: No such file or directory
Makefile:14: recipe for target 'countnotes' failed

-> Я пытался найти libmusicxml2.a, а этого, похоже, не существует.

Когда я запускаю xml2guido (который, кажется, имеет скомпилированную версию в корневом каталоге пакета), я получаю:

xml2guido: error while loading shared libraries: libmusicxml2.so.3.00: cannot open shared object file: No such file or directory

Однако в этом же каталоге есть libmusicxml2.so.3.00.

Может, дело в том, что пакет неправильно связан? Или что-то про отсутствующий файл .a?

Я думаю, что он был построен правильно:

 make
[ 73%] Built target musicxml2
[ 75%] Built target RandomMusic
[ 78%] Built target countnotes
[ 80%] Built target partsummary
[ 82%] Built target readunrolled
[ 85%] Built target xml2guido
[ 87%] Built target xml2midi
[ 90%] Built target xmlclone
[ 92%] Built target xmlfactory
[ 95%] Built target xmliter
[ 97%] Built target xmlread
[100%] Built target xmltranspose

dorien@XP:~/bin/libmusicxml-master$ sudo make install
[ 73%] Built target musicxml2
[ 75%] Built target RandomMusic
[ 78%] Built target countnotes
[ 80%] Built target partsummary
[ 82%] Built target readunrolled
[ 85%] Built target xml2guido
[ 87%] Built target xml2midi
[ 90%] Built target xmlclone
[ 92%] Built target xmlfactory
[ 95%] Built target xmliter
[ 97%] Built target xmlread
[100%] Built target xmltranspose
Install the project...
-- Install configuration: ""-- Up-to-date: /usr/local/lib/libmusicxml2.so.3.00
-- Up-to-date: /usr/local/lib/libmusicxml2.so
-- Up-to-date: /usr/local/include/libmusicxml/musicxmlfactory.h
-- Up-to-date: /usr/local/include/libmusicxml/sortvisitor.h
-- Up-to-date: /usr/local/include/libmusicxml/xmlreader.h
-- Up-to-date: /usr/local/include/libmusicxml/xmlfile.h
-- Up-to-date: /usr/local/include/libmusicxml/libmusicxml.h
-- Up-to-date: /usr/local/include/libmusicxml/unrolled_xml_tree_browser.h
-- Up-to-date: /usr/local/include/libmusicxml/xml.h
-- Up-to-date: /usr/local/include/libmusicxml/elements.h
-- Up-to-date: /usr/local/include/libmusicxml/factory.h
-- Up-to-date: /usr/local/include/libmusicxml/types.h
-- Up-to-date: /usr/local/include/libmusicxml/typedefs.h
-- Up-to-date: /usr/local/include/libmusicxml/xml_tree_browser.h
-- Up-to-date: /usr/local/include/libmusicxml/versions.h
-- Up-to-date: /usr/local/include/libmusicxml/exports.h

0

Решение

Значит ли это, что он не видит библиотеку в / usr / local?

Это означает, что он не нашел заголовок libmusicxml.h, Вы не сказали компилятору искать его в /usr/local/include/libmusicxml,

Могу ли я указать это где-нибудь? Установить путь или что-то?

Смотрите документацию вашего компилятора. В gcc опция для включения путей поиска -I,

Вместо того, чтобы искать заголовок libmusicxml.h от /usr/local/include/libmusicxml/Я бы порекомендовал в том числе libmusicxml/libmusicxml.h и поиск из /usr/local/include, Это было бы проще, так как g ++ ищет из /usr/local/include по умолчанию, поэтому никакие опции компилятора не потребуются.

1

Другие решения

Библиотека (и заголовки) не были распознаны, пока я не запустил:

export LD_LIBRARY_PATH=/addressto/libmusicxml-master

Это исправило это.

0

По вопросам рекламы [email protected]