我正在使用Scientific Linux (SL)。我正在尝试编译一个使用一堆 C++ (.cpp) 文件的项目。
在目录中user/project/Build
,我输入make
以编译和链接所有 .cpp 文件。然后我必须去user/run/
然后输入./run.sh values.txt
要使用 GDB 进行调试,我必须转到user/run
然后键入gdb ../project/Build/bin/Project
并运行,我输入run -Project INPUT/inputfile.txt
. 但是,我正在尝试使用p variablename
.
但是,我收到了消息s1 = <value optimized out>
。我在网上做了一些研究,似乎我需要在没有优化的情况下编译-O0
来解决这个问题。但是我在哪里输入呢?在CMakeLists
?如果是这样,哪些 CMakeLists ?在project/Build
或project/src/project
?
我正在尝试安装这个名为 acqu-root 的软件。这取决于名为root的主要软件。我设法安装了主软件,但 acqu-root 有问题。我收到以下错误。
[kabi@localhost build]$ cmake ..
-- *** Build Type: Debug
-- *** Compiler Flags: -g -O0 -Wall
-- *** Install libs to: /home/kabi/acqu-root/build/lib
-- *** Install bin to: /home/kabi/acqu-root/build/bin
-- Looking for ROOT...
-- Looking for ROOT... - Found /home/kabi/root/bin/root
-- Looking for ROOT... - Found version is 6.03/01
-- Configuring acqu_core...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
Could NOT find LibLZMA (missing: LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY
LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET)
Call Stack (most …
Run Code Online (Sandbox Code Playgroud) 在尝试在新的 Kubuntu 安装上构建https://gitlab.com/interception/linux/tools时,cmake ..
从tools/build
目录运行会返回错误:
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_CXX_COMPILER could be found.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Run Code Online (Sandbox Code Playgroud)
我刚刚安装cmake
并假设它会配备它的编译器,但也许它需要配置才能使用?
我正在尝试为我的基于 ARM 的笔记本电脑编译 Paraview 图形可视化软件;但是,我收到了一些似乎与 cmake 'policies' 相关的配置警告。警告文本和 cmake 手册页表明我应该能够运行命令cmake_policy()
来设置特定策略;但是,我不知道如何或在哪里运行它。
如何设置特定的 cmake 策略?
我正在尝试编译 Shrewsoft VPN 的源代码。说明说要在第 4 步编译源代码。但是...我收到此错误:
\n\nuser@ubuntu:~/Ubuntu One/Programs/ShrewSoft VPN$ sudo cmake \xe2\x80\x93DQTGUI=YES \xe2\x80\x93DETCDIR=/etc \xe2\x80\x93DNATT=YES\nCMake Error: The current CMakeCache.txt directory /home/user/Ubuntu One/Programs/ShrewSoft VPN/CMakeCache.txt is different than the directory /home/user/Programs/ShrewSoft VPN where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt\nCMake Error: The source directory "/home/user/Ubuntu One/Programs/ShrewSoft VPN/\xe2\x80\x93DNATT=YES" does not exist.\nSpecify --help for usage, or press the help button on the CMake GUI.\n
Run Code Online (Sandbox Code Playgroud)\n\n指示:
\n\nCompile the …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译我的程序,该程序需要C++11
功能和boost
比目标机器上安装的更新版本。因此,我使用所有依赖项和 binutils 的树内构建编译并安装gcc 4.9
到某个本地目录 ( /secured/local
)。然后我下载boost 1.55
并运行./boostrap.sh --prefix=/secured/local && ./b4 install
安装boost。两种编译都运行良好,gcc -std=c++11
也运行良好。
我的程序是使用 cmake 和FindXX.cmake
查找文件的常用程序构建的。我正在像这样运行 cmake:
cmake ../source/ -DBOOST_ROOT=/secured/local -DCMAKE_EXE_LINKER_FLAGS='-Wl,-rpath,/secured/local/lib'
Run Code Online (Sandbox Code Playgroud)
它成功地找到了我的新 boost 安装和新版本的 gcc。编译和链接都可以完美地工作。但是,在执行我的程序时,我收到以下错误:
$ ./surface
./surface: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./surface)
./surface: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./surface)
./surface: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./surface)
./surface: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ./surface)
./surface: /usr/lib64/libstdc++.so.6: version …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 CMake 在 Arch Linux 上编译Knut(一个数学程序),但出现以下错误:
/usr/bin/ld: cannot find -lgfortran
/usr/bin/ld: cannot find -lquadmath
collect2: error: ld returned 1 exit status
make[2]: *** [cli/CMakeFiles/knut-cli.dir/build.make:101: cli/knut-cli] Error 1
make[1]: *** [CMakeFiles/Makefile2:498: cli/CMakeFiles/knut-cli.dir/all] Error 2
make: *** [Makefile:128: all] Error 2
Run Code Online (Sandbox Code Playgroud)
我相信gfortran
和quadmath
都已安装,并且链接似乎也正确:
$ ls -al /usr/lib | grep "fortran"
lrwxrwxrwx 1 root root 20 Jun 3 23:11 libgfortran.so -> libgfortran.so.3.0.0
lrwxrwxrwx 1 root root 20 Jun 3 23:11 libgfortran.so.3 -> libgfortran.so.3.0.0
-rwxr-xr-x 1 root root 5858448 …
Run Code Online (Sandbox Code Playgroud) 希望创建一个 Linux 安装程序,它的工作方式类似于 Windows 上的 Inno Setup(这是在 Windows 上创建安装程序的一个很棒的小工具)。
我的项目非常简单(只有几个文件夹),所以我认为使用autotools或cmake太费力了。
有没有像 Inno Setup 这样简单但适用于 Linux 的东西?
我正在尝试在 GuixSD v1.0.0 和 gcc 8.3.0 上编译Xash3D。
如下所示,ld
(GNU Linker)给我错误,ctr1.o 和 ctri.o 丢失。这些文件存在于 /gnu/store/{specicProgramName} 内多个目录下的其他位置,但是,令人惊讶的是,我无法建立到其他库所在的 ~/.guix_profile 的符号链接,即使具有 root 访问权限也是如此。它们有多个版本,大小不同,因此我假设它们仅与各自的程序兼容。此外。~/.guix_profile 似乎模拟了 Unix 系统的根目录,但是在 GuixSD 中,根目录和 ~/.guix_profile 都缺少 /usr,所以我不知道在哪里链接 c 对象,即使我有实际文件。
在本质上,ld
找不到 crt1.o、crti.o 和 libgcc_s.so,并且很可能就像以前一样,在链接或安装这 2 个 c 对象和 libgcc 后,cmake 将停止,并出现有关其他其他错误的进一步错误依赖关系。
无论如何,这是通过以下命令打印/记录的内容(这是安装 Xash3D 的推荐方法)
sudo cmake -DHL_SDK_DIR=../hlsdk -DXASH_SDL=yes -DXASH_VGUI=yes -DCMAKE_C_FLAGS="-m32" -DCMAKE_CXX_FLAGS="-m32" -DCMAKE_EXE_LINKER_FLAGS="-m32" ../ && sudo make
Run Code Online (Sandbox Code Playgroud)
-- The C compiler identification is GNU 9.1.0
-- The CXX compiler identification is GNU 9.1.0
-- Check for working …
Run Code Online (Sandbox Code Playgroud) 我尝试在运行 Centos 7.2 的集群环境中安装 CMake,方法是执行:
./bootstrap --prefix=/home/user/opt
make
make install
Run Code Online (Sandbox Code Playgroud)
编译没有报错,但是cmake --version
显示没有安装。然而, /home/user/opt/bin/cmake -version
给了我:
3.5.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
Run Code Online (Sandbox Code Playgroud)
此外,当我尝试通过安装 gflags 时export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
,我再次得到-bash: cmake: command not found
。
我究竟做错了什么?