RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1340923
Accepted
Rivand
Rivand
Asked:2022-03-22 18:57:21 +0000 UTC2022-03-22 18:57:21 +0000 UTC 2022-03-22 18:57:21 +0000 UTC

尝试在 Linux + cmake 上连接 SDL2 时出现链接器错误

  • 772

从官方网站的源代码编译和安装 SDL 2。

./configure
make
sudo make install

之后,我尝试将其包含在我的 cmake 项目中,但班轮给出了错误unrecognized option '--enable-new-dtags -lSDL2'。

cmake_minimum_required(VERSION 3.20)

project(sdl_test LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(SDL2 REQUIRED)
include_directories(${PROJECT_NAME} ${SDL2_INCLUDE_DIRS})
link_directories(${PROJECT_NAME} ${SDL2_LIBRARIES})

add_executable(${PROJECT_NAME} main.cpp)

target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})

尝试使用 gcc-11 和 clang-13 构建。

Ubuntu 21.10、gcc-11、clang-13、cmake 3.20(尝试过 make 和 ninja 生成器)。

更新:之后我从存储库中额外安装了 sdl 的各个部分,它没有帮助。 sudo apt install libghc-sdl2-dev libsdl2-2.0-0 libsdl2-dev libsdl2-image-2.0-0 libsdl2-image-dev libsdl2-mixer-2.0-0 libsdl2-mixer-dev libsdl2-net-2.0-0 libsdl2-ttf-2.0-0 libsdl2-ttf-dev

upd2 : 构建项目make VERBOSE=1

make VERBOSE=1
/usr/local/bin/cmake -S/home/riv/mainProjects/cpp_test -B/home/riv/mainProjects/cpp_test --check-build-system CMakeFiles/Makefile.cmake 0
/usr/local/bin/cmake -E cmake_progress_start /home/riv/mainProjects/cpp_test/CMakeFiles /home/riv/mainProjects/cpp_test//CMakeFiles/progress.marks
make  -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/riv/mainProjects/cpp_test'
make  -f CMakeFiles/sdl_test.dir/build.make CMakeFiles/sdl_test.dir/depend
make[2]: Entering directory '/home/riv/mainProjects/cpp_test'
cd /home/riv/mainProjects/cpp_test && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /home/riv/mainProjects/cpp_test /home/riv/mainProjects/cpp_test /home/riv/mainProjects/cpp_test /home/riv/mainProjects/cpp_test /home/riv/mainProjects/cpp_test/CMakeFiles/sdl_test.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/home/riv/mainProjects/cpp_test'
make  -f CMakeFiles/sdl_test.dir/build.make CMakeFiles/sdl_test.dir/build
make[2]: Entering directory '/home/riv/mainProjects/cpp_test'
[100%] Building CXX object CMakeFiles/sdl_test.dir/main.cpp.o
/usr/bin/c++  -I/home/riv/mainProjects/cpp_test/sdl_test -I/usr/local/include/SDL2 -std=gnu++17 -MD -MT CMakeFiles/sdl_test.dir/main.cpp.o -MF CMakeFiles/sdl_test.dir/main.cpp.o.d -o CMakeFiles/sdl_test.dir/main.cpp.o -c /home/riv/mainProjects/cpp_test/main.cpp
[100%] Linking CXX executable sdl_test
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/sdl_test.dir/link.txt --verbose=1
/usr/bin/c++ CMakeFiles/sdl_test.dir/main.cpp.o -o sdl_test   -L/home/riv/mainProjects/cpp_test/sdl_test  -L"/home/riv/mainProjects/cpp_test/-L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,--enable-new-dtags -lSDL2"  -Wl,-rpath,"/home/riv/mainProjects/cpp_test/sdl_test:/home/riv/mainProjects/cpp_test/-L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,--enable-new-dtags -lSDL2" -L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,--enable-new-dtags -lSDL2 
/usr/bin/ld: unrecognized option '--enable-new-dtags -lSDL2'
/usr/bin/ld: use the --help option for usage information
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/sdl_test.dir/build.make:97: sdl_test] Error 1
make[2]: Leaving directory '/home/riv/mainProjects/cpp_test'
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/sdl_test.dir/all] Error 2
make[1]: Leaving directory '/home/riv/mainProjects/cpp_test'
make: *** [Makefile:91: all] Error 2
c++
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Fat-Zer
    2022-03-22T20:43:08Z2022-03-22T20:43:08Z
    link_directories(${PROJECT_NAME} ${SDL2_LIBRARIES})
    

    这一行是多余的:您试图将链接标志而不是目录与用于链接的库一起放置,这极大地混淆了链接器。没有必要表明它。在 sdl2 附带的配置模块中,已经包含链接器库的路径(标志),因此可以简单地省略此行。find_package()SDL2_LIBRARIES-L...

    如果要显式指定库的路径,则在变量中设置SDL2_LIBDIR:

    link_directories(${SDL2_LIBDIR})
    

    另外,不是错误,但您link_directories不需要include_directories将目录传递给${PROJECT_NAME}(如果确实没有包含包含的此类目录)。

    • 2

相关问题

  • 编译器和模板处理

  • 指针。找到最小数量

  • C++,关于枚举类对象初始化的问题

  • 函数中的二维数组

  • 无法使用默认构造函数创建类对象

  • C++ 和循环依赖

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5