Фатальная ошибка - Нет такого файла или каталога

Я установил библиотеку CD с командой ./build.sh -b 64 -z '-std=c++0x' -l '-L /usr/lib/x86_64-linux-gnu' --with-boost /usr/include/boost --amd64-use-128bit в build папка.

После того, как я попытался скомпилировать пример init.cpp из src папку, я набрал это в терминале: g++ init.cpp -o init, а терминал показал: fatal error: cds/init.h: No such file or directory,

Что я должен сделать для команды компиляции в этом случае? Благодарю.

1 ответ

Для общего устранения неполадок в подобных случаях я бы порекомендовал выяснить, где в системе был установлен файл (если ваш build.sh действительно установил файл). Вы сможете найти отсутствующий заголовочный файл, используя

find / -path '*/cds/init.h' 2>/dev/null

Затем вам нужно указать два параметра для g++:

Первым делом компилятор узнает о включаемых файлах из каталога установки

-I path_to_folder_one_step_above_cds_folder

Во-вторых, компоновщик узнает о расположении библиотек. Если файл библиотеки называется libcds.so, вы можете найти его, запустив

find / -name libcds.so 2>/dev/null

Таким образом, для связи, вы поставите флаг

-L path_to_folder_one_step_above_libcds.so

В вашем случае вам может не понадобиться флаг -L, так как большая часть вашей библиотеки предположительно является только заголовком.

ОБНОВЛЕНИЕ: скрипт build.sh выводит важную информацию вверху, начиная с "Сборка со следующими параметрами:". Важными битами будут "Параметры компиляции" и "Параметры ссылки:". Этого должно быть достаточно, чтобы решить ваш конкретный вариант.

UPDATE2: build.sh также экспортирует некоторые флаги, которые могут включать дополнительные параметры. Вы можете распечатать их сразу после запуска build.sh, запустив

echo LDFLAGS=$LDFLAGS
echo CFLAGS=$CFLAGS
echo CXXFLAGS=$CXXFLAGS

вам, вероятно, понадобится передать все эти опции в g ++ при компиляции и компоновке этой библиотеки. LDFLAGS относятся только к компоновщику. Оба других необходимы для компиляции файлов C++.

Другие вопросы по тегам