2016-02-18 2 views
0

Я установил библиотеку 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.

Что мне делать для команды компиляции в этом случае? Спасибо.

+0

Есть ли «-L/usr/ib/x86_64-linux-gnu» только опечатка? (Вероятно, вы имели в виду «-L/usr/lib/x86_64-linux-gnu») – optisimon

+0

Спасибо за исправление. –

+0

Вы установили 'libcds' или вы только что создали его? Вы можете проверить, что 'cds/init.h' находится где-то в каталоге'/usr/include'? – alvits

ответ

0

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

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

Затем вам нужно поставить два параметра г ++:

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

-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, так как большая часть вашей библиотеки предположительно является только заголовком.

UPDATE: сценарий build.sh печатает важную информацию вверху, начиная с «Создание со следующими параметрами:». Важными битами будут «Параметры компиляции:» и «Параметры ссылки:». Этого должно быть достаточно, чтобы решить ваш конкретный вариант.

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

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

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

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