无法将文件标记为可执行文件 (?)

Cannot mark file as executable (?)

[注意:] 我首先认为问题是由 CUDA 引起的,但这只是因为我的文件系统(见答案) - 所以这可能属于任何程序,如果其他人卡在这里。

问题

在 CUDA 的帮助下,我尝试在 Ubuntu 上使用我的 NVIDIA-GPU 进行编程。

当我编译时一切正常 - 没有错误,没有警告。但最后我得到了一个我无法打开的可执行文件,我收到消息 Permission denied。当我检查访问权限时,我发现该文件不是 "marked as executable"。如果我尝试设置它,该框会立即再次取消选中。甚至像

这样的命令
sudo chmod +x ./myprogram 

不起作用(权限保持不变)。

我做了什么

我安装了

sudo apt-get install nvidia-cuda-dev nvidia-cuda-toolkit 

之后

sudo apt-get install build-essential freeglut3-dev libgl1-mesa-glx libglu1-mesa-dev libx11-dev libxi-dev libxmu-dev 

代码本身应该没问题,因为它在所有其他机器上都能完美运行,但在我的 Ubuntu/GPU 组合 (?) 上不行。

根据CMakesLists.txt

cmake_minimum_required(VERSION 2.8)
project( gpuSobel )
find_package( CUDA REQUIRED)
find_package( OpenCV REQUIRED )

if (CUDA_FOUND)
    message("CUDA found!")
    set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -O3 -lineinfo -gencode arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode=arch=compute_35,code=sm_35 -gencode=arch=compute_35,code=compute_35)

    set(CUDASRCS 
        main.cu
    )

    CUDA_ADD_EXECUTABLE(gpuSobel ${CUDASRCS})

else()
    message("CUDA not found, abort")
endif()

set(CMAKE_CXX_FLAGS "-g -Wall")

# SSE support
if(CMAKE_COMPILER_IS_GNUCXX)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")
endif()

target_link_libraries( gpuSobel ${OpenCV_LIBS} )


add_custom_command(TARGET gpuSobel POST_BUILD
   COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/images
$<TARGET_FILE_DIR:gpuSobel>/images)

请大神赐教,为什么 sudo 在这里也无能为力,是编译错误还是 Linux 错误?

你见过http://bikulov.org/blog/2013/12/24/example-of-cmake-file-for-cuda-plus-cpp-code/吗?? 我总是使用他们的 Cmake 代码。

我发现我是 compiling/accessing 不支持访问权限的分区上的编译文件。当我将它复制到我的主目录 (~/) 时,我可以设置访问权限并在之后执行该文件。

感谢您的帮助。