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”,并将其保存在工作目录下。为此,请按照以下步骤操作:

  1. 在“Program arguments(R)”中,将输出文件名更改为“binaryTree_output”(例如,可以在原有参数的基础上添加 -o binaryTree_output)。
  2. 在“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 编译下, 文件名和目录名冲突问题的主要内容,如果未能解决你的问题,请参考以下文章

clion编译jni,找不到jni.h的解决办法

# Clion中编译多个cpp(实现单文件编译)

WSL + Scons:无此类文件或目录

Mac下使用Clion调试MySQL版本5.7源码

编译JDK12

Windows10 WSL下 龙芯3A 交叉编译环境搭建