Как создать библиотеку .so с кодом CUDA?
Пытаюсь создать динамическую библиотеку so с кодом CUDA для Linux. Пытаюсь скомпилировать:
nvcc CudaLib.cu -shared -o CudaLib.so -arch=native
Получаю ошибку:
перемещение R_X86_64_32S для «.rodata» не может использоваться при создании общий объект; перекомпилируйте с параметром -fPIC
Понятно, что для компиляции нужен параметр -fPIC, но в nvcc он не поддерживается. Если написать
nvcc CudaLib.cu -shared -fPIC -o CudaLib.so -arch=native
то будет ошибка:
Unknown option '-fPIC'
Ответы (1 шт):
Автор решения: alvahtin
→ Ссылка
Нашёл ответ. Для того, чтобы добавить флаг -fPIC нужно использовать -Xcompiler=-fPIC.
Таким образом, строка компиляции будет
nvcc CudaLib.cu -shared -Xcompiler=-fPIC -o CudaLib.so -arch=native