重新编译遇到的错误:
注明:在使用以下解决方法前需要安装并正确配置好cuda和对应版本的关系。
可参考另一片文章:https://blog.youkuaiyun.com/mygugu/article/details/95862581
1.总是报错:找不到/usr/bin/ld lcudnn
解决方法:
(1)这是网上给出的办法,但对于我的错误没有起到做用
(2)自己的解决办法:将cudnn安装包移到和cuda路径下,我的是在/home/zqq/download下,再解压,执行命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
在运行命令期间报错:
zqq@zqq-Precision-Tower-5810:~/download$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
cp: 无法通过符号链接'/usr/local/cuda/lib64/libcudnn.so' 进行操作
cp: 无法通过符号链接'/usr/local/cuda/lib64/libcudnn.so.7' 进行操作
zqq@zqq-Precision-Tower-5810:~/download$
zqq@zqq-Precision-Tower-5810:~/download$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
zqq@zqq-Precision-Tower-5810:~/download$
zqq@zqq-Precision-Tower-5810:~/download$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
chmod: 无法创建符号链接'/usr/local/cuda/lib64/libcudnn.so'
chmod: 无法创建符号链接'/usr/local/cuda/lib64/libcudnn.so.7'
此时将/usr/local/cuda/lib64下面已有的libcudnn*删除:命令为sudo rm -rf /usr/local/cuda/lib64/libcudnn*
再重新执行失败的命令:
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
成功!
此时重新在vscode的终端下:
make clean
make
就可以成功生成libdarknet.so文件
2.配置文件设置:
(1)launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/darknet",
"args": ["detector","test","cfg/coco.data","cfg/darknet19.cfg","darknet19.weights"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
(2)c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"/usr/include/**",//include路径,否则会提示找不到includePath
"${workspaceFolder}/**",
"${workspaceFolder}/include"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
(3)编译运行:
每次修改程序都需要重新编译
make clean
make
(4)遇到includePath找不到的问题,
解决办法有两种一种是按照上面c_cpp_properties.json中显示的写:
"includePath": [
"/usr/include/**",//include路径,否则会提示找不到includePath
"${workspaceFolder}/**",
"${workspaceFolder}/include"
还有一种方法是:
解决:
终端输入:
gcc -v -E -x c++ -
输出为:
使用内建 specs。
COLLECT_GCC=gcc
目标:x86_64-pc-linux-gnu
配置为:../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
线程模型:posix
gcc 版本 7.3.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-E' '-mtune=generic' '-march=x86-64'
/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/cc1plus -E -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE - -mtune=generic -march=x86-64
忽略不存在的目录“/usr/local/include/x86_64-linux-gnu”
忽略不存在的目录“/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/include”
#include "..." 搜索从这里开始:
#include <...> 搜索从这里开始:
/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0
/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/x86_64-pc-linux-gnu
/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/backward
/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include
/usr/local/include
/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
搜索列表结束。
复制搜索结果放到c_cpp_properties.json的include下即可,最后的结果:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0",
"/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/x86_64-pc-linux-gnu",
"/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/backward",
"/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include",
"/usr/local/include",
"/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include-fixed",
"/usr/include/x86_64-linux-gnu",
"/usr/include"
],
"defines": [],
"compilerPath": "/usr/local/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}