Ошибка компиляции с помощью cgo: iostream: 38: 28: фатальная ошибка: bits / c ++ config.h: такого файла или каталога нет

Я попытался выполнить пример саксофона из официального руководства cuda nvrtc в эта страница

Он прекрасно работает с компилятором g ++ на терминале и следуя инструкциям по сборке:

g++ saxpy.cpp -o saxpy -I $CUDA_PATH/include -L $CUDA_PATH/lib64 -lnvrtc -lcuda -Wl,-rpath,$CUDA_PATH/lib64

Сейчас я пытаюсь выполнить его на языке go с помощью инструмента cgo.
Я назвал функцию main в my_function и пытаюсь вызвать ее с помощью функции C.my_function.

это мои директивы cgo:

//PATH
#cgo LDFLAGS: -L/usr/local/cuda-7.0/lib64 -L/usr/local/cuda-7.0/lib -lcuda -lnvrtc
#cgo CPPFLAGS: -I/usr/local/cuda-7.0/include/ -I/usr/include/c++/4.8

//FILE
#include "saxpy_header.h"#include <nvrtc.h>
#include "iostream"#include <cuda.h>

Но я получаю это сообщение об ошибке:

/usr/include/c++/4.8/iostream:38:28: fatal error: bits/c++config.h: No such file or directory
#include <bits/c++config.h>

Итак, я попробовал это:

#include "/usr/include/x86_64-linux-gnu/c++/4.9/bits/c++config.h"

И теперь я получаю это новое сообщение об ошибке:

/usr/include/x86_64-linux-gnu/c++/4.9/bits/c++config.h:430:29: fatal error: bits/os_defines.h: No such file or directory
#include <bits/os_defines.h>

После добавления #include "/usr/include/x86_64-linux-gnu/c++/4.9/bits/os_defines.h" Я получаю ту же ошибку …

Как я могу решить эту проблему?

0

Решение

Просто дикое предположение здесь, так как я ничего не знаю о go / cgo …

Похоже, у вас есть amix-up между версиями 4.8 и 4.9 компилятора g ++.

Я бы попытался изменить строку cgo CPPFLAGS соответственно, на это:

#cgo CPPFLAGS: -I/usr/local/cuda-7.0/include/ -I/usr/include/c++/4.9

Но опять же, просто гадать …

1

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