【问题标题】:SOS: Code is making a .o file but no .exe file when compilingSOS:编译时代码正在生成 .o 文件但没有 .exe 文件
【发布时间】:2021-07-12 18:09:31
【问题描述】:

我正在尝试使用 clang++ 编译器使用 make cmd 在 WSL 2 上编译一个 c++ 项目。

我收到以下消息:

root@DESKTOP-1I1NU1L:/mnt/c/users/LaVision/source/Yoakum# make
clang++ -std=c++17 -stdlib=libc++ -I/usr/include/boost/ -o YOAKUM.exe driver.o
/usr/bin/ld: cannot find -lc++
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:10: YOAKUM.exe] Error 1

这是我的制作文件的副本:

  CC := clang++
  export CPLUS_INCLUDE_PATH = /usr/include/c++/8 
  :/usr/include/x86_64-linux-gnu/c++/8

  FLAGS := -std=c++17 -stdlib=libc++ -I/usr/include/boost/

  all: YOAKUM.exe

  OBJECTS := driver.o
  YOAKUM.exe: $(OBJECTS)
     $(CC) $(FLAGS) -o YOAKUM.exe $(OBJECTS) 

 driver.o: driver.cpp driver.hpp configure.hpp Dust_State.hpp\
  configure.hpp System.hpp io_observers.hpp basic_forces.hpp\
  interaction_forces.hpp Vector.hpp
  $(CC) $(FLAGS) -c driver.cpp 

我使用的是 4.2.1 版。 Clang 版本 7.0.1-8+deb10u2。

任何帮助都将不胜感激,因为我是一个新开发者并且完全被这个问题难住了。

【问题讨论】:

  • 在链接时,您应该使用与提供给编译器的选项不同的选项,LDFLAGSFLAGS,并在调用链接器时代替 FLAGS
  • 对不起,如果答案很明显,但我应该将 FLAGS 和 LDFLAGS 设置为什么?这会迫使我更改在当前 make 文件中使用 FLAGS 的位置吗? @user4581301
  • 不明显,但很难确定您需要哪些选项。我试图解决这个问题,但我搞砸了。 LDFLAGS 上发生的事情变化太大。你可能不需要任何东西。但由于您包含了 boost,您可能需要 LDFLAGS := -L<path to boost lib folder>a LIB := -l<boost library used>。然后你得到$(CC) $(LDFLAGS) -o YOAKUM.exe $(OBJECTS) $(LIBS)`
  • $(CC) $(FLAGS) -o YOAKUM.exe $(OBJECTS) 中删除$(FLAGS) 开始,看看链接器抱怨什么。
  • 还有 SOS... 那是什么操作系统?

标签: c++ makefile linker windows-subsystem-for-linux clang++


【解决方案1】:

=======解决方案=========

我将 FLAGS 更改为 LDFLAGS 并删除 :/usr/include/x86_64-linux-gnu/c++/8 从出口声明。代码编译、链接并运行。

===========================

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多