Linux 下qt creator 对c++ 和cuda混合编译生成.so 文件

阅读: 评论:0

Linux 下qt creator 对c++ 和cuda混合编译生成.so 文件

Linux 下qt creator 对c++ 和cuda混合编译生成.so 文件

问题一 :creator 上如何设置可以编译输出.so 文件,要做哪些工作呢?解决如下

1、TEMPLATE = lib

       DEFINES += TESTPCL_LIBRARY        //(我的项目名 TARGET = testPCL)

2、在我要开放出去的接口类那里 做一个定义,就可以在编译的时候自动支持 -shared -fPIC 了

#include <QtCore/qglobal.h>    //必要
#if defined(TESTPCL_LIBRARY)
#  define TESTPCLSHARED_EXPORT Q_DECL_EXPORT
#else
#  define TESTPCLSHARED_EXPORT Q_DECL_IMPORT
#endif然后在API类那里声明下,如class TESTPCLSHARED_EXPORT ProcessController
{*********void ***();//函数不用额外声明也行
}

3、静态库**.a 如何编译设置呢 ?

        TEMPLATE = lib

        CONFIG = staticlib    即可

问题二:cuda如何编译动态库呢?

cuda 不支持直接-fPIC,需要在前面加一个-Xcompiler 就行,我的pro文件中设置如下:

CUDA_SDK = "/usr/local/cuda/"   # Path to cuda SDK installCUDA_DIR = "/usr/local/cuda/"   # Path to cuda toolkit install# DO NOT EDIT BEYOND THIS UNLESS YOU KNOW WHAT YOU SYSTEM_NAME = ubuntu        # Depending on your system either 'Win32', 'x64', or 'Win64'SYSTEM_TYPE = 64            # '32' or '64', depending on your systemCUDA_ARCH = sm_50           # Type of CUDA architecture,# for example 'compute_10', 'compute_11', 'sm_10'NVCC_OPTIONS = --use_fast_math# include pathsINCLUDEPATH += $$CUDA_DIR/include# library directoriesQMAKE_LIBDIR += $$CUDA_DIR/lib64/# Add the necessary librariesCUDA_LIBS = -lcuda -lcudart# The following makes sure all path names (which often include spaces)# are put between quotation marksCUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')LIBS += $$CUDA_LIBS# Configuration of the Cuda compilerCONFIG(debug, debug|release) {# Debug modecuda.input  = CUDA_SOURCEScuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_udamands = $$CUDA_DIR/bin/nvcc -shared -Xcompiler -fPIC -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}cuda.dependency_type = TYPE_CQMAKE_EXTRA_COMPILERS += cuda}else {# Release modecuda.input = CUDA_SOURCEScuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_udamands = $$CUDA_DIR/bin/nvcc -shared -Xcompiler -fPIC  $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}cuda.dependency_type = TYPE_CQMAKE_EXTRA_COMPILERS += cuda}

命令行的话直接 nvcc -shared -Xcompiler -fPIC -c ***.cu -o ***.o 就行

然后把cuda的o文件和c++的o文件 链接完事生成.so 文件

注意链接的时候后面要加上cuda的库引用,如下

g++ -shared -o libtest.so  *.o -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -lcudnn //所有o文件都链接

本文发布于:2024-01-29 15:29:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170651335216251.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   qt   Linux   cuda   creator
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23