clion使用 wsl 编译下, 文件名和目录名冲突问题
Posted xxxfhy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clion使用 wsl 编译下, 文件名和目录名冲突问题相关的知识,希望对你有一定的参考价值。
问题描述:
在工作目录下有一文件夹(nameA)与文件(nameA)重名:
/usr/bin/ld: cannot open output file **: Is a directory collect2: error: ld returned 1 exit status
问题在于链接器(ld)试图将二进制文件输出到一个名为 "binaryTree" 的目录中
解决方案:
更改输出文件名或输出路径,避免二进制文件名称和工作路径下文件夹名称重名。
可以将输出文件名更改为“binaryTree_output”,并将其保存在工作目录下。为此,请按照以下步骤操作:
- 在“Program arguments(R)”中,将输出文件名更改为“binaryTree_output”(例如,可以在原有参数的基础上添加
-o binaryTree_output
)。 - 在“Working directory(W)”中,设置一个合适的工作目录,例如:
/mnt/c/Users/Lenod/OneDrive/workspace/cpp/binaryTree
。
完成这些更改后,点击“Apply”和“OK”以保存设置。现在,运行或调试项目时,应该不会再出现文件名和目录名冲突的问题。
clion编译jni,找不到jni.h的解决办法
参考技术A 在windows环境下生成的动态库是 dll在linux下生成so
在mac下生成的是dylib
所以对于Android的开发者来说,还是要用ndk的工具
把在idea生成的.h文件粘贴到clion的项目中就可以了,
如果找不到jni.h可以在CMakeList.txt中添加对jni.h文件的引用
如下:
后面三行根据jdk的实际位置填写,作用是导入jni相关的头文件;其他的操作系统可能不完全一致
复制.h头文件 com_shenby_jni_JniExample.h
实现该文件定义的函数 com_shenby_jni_JniExample.c
在CMakeList.txt中添加生成动态共项库
add_library:生成一个库,add_executable:生成一个可执行文件
hello:是生成共享库的名字,前面会自动加上lib前缀,如这里windows生成的是 libhello.dll
SHARED:库的类型为动态,windows上生成.dll,而STATIC 则是生成静态库,windows生成.a文件
com_shenby_jni_JniExample.c :c源文件,多个文件就添加在后面,切记不能添加上面的com_shenby_jni_JniExample.h
文件,否则生成的库中的函数为空
结果如下
就可以把该dll文件粘贴到idea的项目根目录中运行了
以上是关于clion使用 wsl 编译下, 文件名和目录名冲突问题的主要内容,如果未能解决你的问题,请参考以下文章