问题一 :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小时内删除。
留言与评论(共有 0 条评论) |