SEH,DEP, Compiler,FS:[0], LOAD_CONFIG and PE format

本文通过一个具体的示例探讨了结构化异常处理(SEH)与/SafeSEH选项之间的相互作用。作者尝试在不同编译模式下实现自定义的异常处理程序,并分析了为何在发布模式下该处理程序被视为无效的原因。文章深入讨论了PE文件格式中LOAD_CONFIG目录的作用及其对/SafeSEH的支持情况。
部署运行你感兴趣的模型镜像

SEH,DEP, Compiler,FS:[0], LOAD_CONFIG and PE format

原贴地址:
http://spaces.msn.com/eparg/blog/cns!59BFC22C0E7E1A76!712.entry
原贴时间:
2006-04-16
原贴作者:
eparg


Recently I am planning some user mode troubleshooting paper. In the exception section, I tried the following code to explain how SEH works in VS2005
 
 
BOOL EXCEPTION=0; //Exception flag.
class ExcepStackMsg //Create local variable of this class to record function info
{
 char* pmsg;
public:
 ExcepStackMsg(char *msg)
 {
  pmsg=(char*)malloc(strlen(msg)+1);
  strcpy(pmsg,msg);
 };
 ~ExcepStackMsg()
 {
  if(EXCEPTION)
   printf("Exception happens: %s/n",pmsg);
  free(pmsg); 
 };
};
EXCEPTION_DISPOSITION
__cdecl
_except_handler(
    struct _EXCEPTION_RECORD *ExceptionRecord,
    void * EstablisherFrame,
    struct _CONTEXT *ContextRecord,
    void * DispatcherContext )
{
 EXCEPTION=1; 
 //printf("got it/n");
    return ExceptionContinueSearch; //Allow C++ handler to run
}

void foo1()

 //printf("in foo1/n");
 //ExcepStackMsg e("foo1");
 throw 1;
};
void foo2()
{
 //printf("in foo2/n");
 //ExcepStackMsg e("foo2");
 foo1(); 
};
void foo3()
{
 //printf("in foo3/n");
 //ExcepStackMsg e("foo3");
 foo2();
};
DWORD WINAPI ThreadProc( LPVOID lpParameter)
{
 
 DWORD myESP;
 void * test=_except_handler;
 DWORD handler = (DWORD)_except_handler;
 //_except_handler(0,0,0,0);
 printf("1/n");
 getchar();
  __asm
     {
   mov  myESP,ESP  //Save Stack register pointers
         push    _except_handler         // Address of handler function
  // push    test         // Address of handler function
         push    FS:[0]          // Address of previous handler
         mov     FS:[0],ESP      // Install new EXECEPTION_REGISTRATION
  // mov  FS:[0],100
     }
 try
 {
 printf("2/n");
  getchar();
 
  foo3();
 }
 catch(...)
 {
  EXCEPTION=0;
  printf("catch/n");
 };
 __asm
    {                          
  mov ESP,myESP   //Restore Stack register pointers
 }
   
 return 0;
}
 
The problem is that, in debug mode, my _except_handler is injected and called fine. However, in release mode, the application exists silently. No AV, just inform me 2nd chance C++ exception. How could it happen?
 
I set bp on kernel32!RaiseException, and then use !exchain to exam, but the result is under my expectation. I have to trace the assembly code step by step.
 
At last, the cause is the ntdll!RtlIsValidHandler function. My _except_handler function is passed in to exam. In release mode, the return value is NULL. However, by dumping the paramer before calling RtlIsValidHanlder to check, everything is fine and the address of my _except_handler is exactly there. The only difference is that in debug mode, the handler is wrapped by a stub jmp; while in release mode, the naked function start address is passed in. Is there any restriction for the exception handler?
 
Checking the assembly code to find out the root cause is not the most effective way. Let me discuss with xwlan the expert tomorrow.
 
PS: I tried to turn off the DEP without help :(
 
 
======30 mins later=========
 
After idle around for a while without any other intresting things, I decied to trace on. I found the RtlIsValidHandler goes into RtlLookupFunctionTable. ok, let me try google, and then I get:
 
 
U know what? This article is from:
 
 
The bloger is xwlan....
 
 
=========18 hours later=======
 
xwlan is OOF so I have to go on by myself.
 
After 2.5 hours, I found the problem is related to PE header. During the exception handler dispatch, the OS checks the PE header to find out if LOAD_CONFIG section is avaliable. I am not quite sure if the LOAD_CONFIG section is the exception handler table. If the section is avaliable, the handler must exist in the section. Otherwise, the handler must be in Read_Execute page.
 
The call stack is:
 
0012f5f8 7c832742 ntdll!RtlpImageDirectoryEntryToData32+0x44
0012f618 7c8155dc ntdll!RtlImageDirectoryEntryToData+0x57
0012f634 7c815638 ntdll!RtlCaptureImageExceptionValues+0x32
0012f670 7c813fe2 ntdll!RtlLookupFunctionTable+0xd0
0012f6c4 7c8140b3 ntdll!RtlIsValidHandler+0x24
0012f738 7c82ecc6 ntdll!RtlDispatchException+0x78
0012f738 77e55dea ntdll!KiUserExceptionDispatcher+0xe
0012fa90 10243990 kernel32!RaiseException+0x53
0012fad0 0041154c MSVCR80D!_CxxThrowException+0x50
 
The difference between debug version and release version is explict with windbg output and the PE tool from Matt Pietrek's PE tool in MSDN.
 
Release version
-------------------- 
0:000> dt NtHeaders -r -b
Local var @ 0x12fa6c Type _IMAGE_NT_HEADERS*
0x004000f8
   +0x000 Signature        : 0x4550
   +0x004 FileHeader       : _IMAGE_FILE_HEADER
      +0x000 Machine          : 0x14c
      +0x002 NumberOfSections : 4
      +0x004 TimeDateStamp    : 0x4442f434
      +0x008 PointerToSymbolTable : 0
      +0x00c NumberOfSymbols  : 0
      +0x010 SizeOfOptionalHeader : 0xe0
      +0x012 Characteristics  : 0x103
   +0x018 OptionalHeader   : _IMAGE_OPTIONAL_HEADER
      +0x000 Magic            : 0x10b
      +0x002 MajorLinkerVersion : 0x8 ''
      +0x003 MinorLinkerVersion : 0 ''
      +0x004 SizeOfCode       : 0xc00
      +0x008 SizeOfInitializedData : 0xe00
      +0x00c SizeOfUninitializedData : 0
      +0x010 AddressOfEntryPoint : 0x1473
      +0x014 BaseOfCode       : 0x1000
      +0x018 BaseOfData       : 0x2000
      +0x01c ImageBase        : 0x400000
      +0x020 SectionAlignment : 0x1000
      +0x024 FileAlignment    : 0x200
      +0x028 MajorOperatingSystemVersion : 4
      +0x02a MinorOperatingSystemVersion : 0
      +0x02c MajorImageVersion : 0
      +0x02e MinorImageVersion : 0
      +0x030 MajorSubsystemVersion : 4
      +0x032 MinorSubsystemVersion : 0
      +0x034 Win32VersionValue : 0
      +0x038 SizeOfImage      : 0x5000
      +0x03c SizeOfHeaders    : 0x400
      +0x040 CheckSum         : 0x8862
      +0x044 Subsystem        : 3
      +0x046 DllCharacteristics : 0
      +0x048 SizeOfStackReserve : 0x100000
      +0x04c SizeOfStackCommit : 0x1000
      +0x050 SizeOfHeapReserve : 0x100000
      +0x054 SizeOfHeapCommit : 0x1000
      +0x058 LoaderFlags      : 0
      +0x05c NumberOfRvaAndSizes : 0x10
      +0x060 DataDirectory    :
       [00] _IMAGE_DATA_DIRECTORY
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [01]
         +0x000 VirtualAddress   : 0x23a4
         +0x004 Size             : 0x3c
       [02]
         +0x000 VirtualAddress   : 0x4000
         +0x004 Size             : 0x1ac
       [03]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [04]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [05]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [06]
         +0x000 VirtualAddress   : 0x20e0
         +0x004 Size             : 0x1c
       [07]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [08]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [09]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [10]
         +0x000 VirtualAddress   : 0x2148
         +0x004 Size             : 0x40

       [11]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [12]
         +0x000 VirtualAddress   : 0x2000
         +0x004 Size             : 0xc4
       [13]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [14]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [15]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
 

Dump of file RSE.EXE
File Header
  Machine:                      014C (I386)
  Number of Sections:           0004
  TimeDateStamp:                4442F434 -> Mon Apr 17 09:49:40 2006
  PointerToSymbolTable:         00000000
  NumberOfSymbols:              00000000
  SizeOfOptionalHeader:         00E0
  Characteristics:              0103
    RELOCS_STRIPPED
    EXECUTABLE_IMAGE
    32BIT_MACHINE
Optional Header
  Magic                         010B
  linker version                8.00
  size of code                  C00
  size of initialized data      E00
  size of uninitialized data    0
  entrypoint RVA                1473
  base of code                  1000
  base of data                  2000
  image base                    400000
  section align                 1000
  file align                    200
  required OS version           4.00
  image version                 0.00
  subsystem version             4.00
  Win32 Version                 0
  size of image                 5000
  size of headers               400
  checksum                      8862
  Subsystem                     0003 (Windows character)
  DLL flags                     0000
  stack reserve size            100000
  stack commit size             1000
  heap reserve size             100000
  heap commit size              1000
  RVAs & sizes                  10
Data Directory
  EXPORT           rva: 00000000  size: 00000000
  IMPORT           rva: 000023A4  size: 0000003C
  RESOURCE         rva: 00004000  size: 000001AC
  EXCEPTION        rva: 00000000  size: 00000000
  SECURITY         rva: 00000000  size: 00000000
  BASERELOC        rva: 00000000  size: 00000000
  DEBUG            rva: 000020E0  size: 0000001C
  ARCHITECTURE     rva: 00000000  size: 00000000
  GLOBALPTR        rva: 00000000  size: 00000000
  TLS              rva: 00000000  size: 00000000
  LOAD_CONFIG      rva: 00002148  size: 00000040
  BOUND_IMPORT     rva: 00000000  size: 00000000
  IAT              rva: 00002000  size: 000000C4
  DELAY_IMPORT     rva: 00000000  size: 00000000
  COM_DESCRPTR     rva: 00000000  size: 00000000
  unused           rva: 00000000  size: 00000000
 
 
Debug version
------------------- 
0:000> dt NtHeaders -r -b
Local var @ 0x12f610 Type _IMAGE_NT_HEADERS*
0x004000f0
   +0x000 Signature        : 0x4550
   +0x004 FileHeader       : _IMAGE_FILE_HEADER
      +0x000 Machine          : 0x14c
      +0x002 NumberOfSections : 6
      +0x004 TimeDateStamp    : 0x4442f2da
      +0x008 PointerToSymbolTable : 0
      +0x00c NumberOfSymbols  : 0
      +0x010 SizeOfOptionalHeader : 0xe0
      +0x012 Characteristics  : 0x103
   +0x018 OptionalHeader   : _IMAGE_OPTIONAL_HEADER
      +0x000 Magic            : 0x10b
      +0x002 MajorLinkerVersion : 0x8 ''
      +0x003 MinorLinkerVersion : 0 ''
      +0x004 SizeOfCode       : 0x5000
      +0x008 SizeOfInitializedData : 0x5000
      +0x00c SizeOfUninitializedData : 0
      +0x010 AddressOfEntryPoint : 0x1108c
      +0x014 BaseOfCode       : 0x1000
      +0x018 BaseOfData       : 0x1000
      +0x01c ImageBase        : 0x400000
      +0x020 SectionAlignment : 0x1000
      +0x024 FileAlignment    : 0x1000
      +0x028 MajorOperatingSystemVersion : 4
      +0x02a MinorOperatingSystemVersion : 0
      +0x02c MajorImageVersion : 0
      +0x02e MinorImageVersion : 0
      +0x030 MajorSubsystemVersion : 4
      +0x032 MinorSubsystemVersion : 0
      +0x034 Win32VersionValue : 0
      +0x038 SizeOfImage      : 0x1b000
      +0x03c SizeOfHeaders    : 0x1000
      +0x040 CheckSum         : 0
      +0x044 Subsystem        : 3
      +0x046 DllCharacteristics : 0
      +0x048 SizeOfStackReserve : 0x100000
      +0x04c SizeOfStackCommit : 0x1000
      +0x050 SizeOfHeapReserve : 0x100000
      +0x054 SizeOfHeapCommit : 0x1000
      +0x058 LoaderFlags      : 0
      +0x05c NumberOfRvaAndSizes : 0x10
      +0x060 DataDirectory    :
       [00] _IMAGE_DATA_DIRECTORY
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [01]
         +0x000 VirtualAddress   : 0x19000
         +0x004 Size             : 0x3c
       [02]
         +0x000 VirtualAddress   : 0x1a000
         +0x004 Size             : 0x459
       [03]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [04]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [05]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [06]
         +0x000 VirtualAddress   : 0x16620
         +0x004 Size             : 0x1c
       [07]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [08]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [09]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [10]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0

       [11]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [12]
         +0x000 VirtualAddress   : 0x191cc
         +0x004 Size             : 0x190
       [13]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [14]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
       [15]
         +0x000 VirtualAddress   : 0
         +0x004 Size             : 0
 
Dump of file DBG.EXE
File Header
  Machine:                      014C (I386)
  Number of Sections:           0006
  TimeDateStamp:                4442F2DA -> Mon Apr 17 09:43:54 2006
  PointerToSymbolTable:         00000000
  NumberOfSymbols:              00000000
  SizeOfOptionalHeader:         00E0
  Characteristics:              0103
    RELOCS_STRIPPED
    EXECUTABLE_IMAGE
    32BIT_MACHINE
Optional Header
  Magic                         010B
  linker version                8.00
  size of code                  5000
  size of initialized data      5000
  size of uninitialized data    0
  entrypoint RVA                1108C
  base of code                  1000
  base of data                  1000
  image base                    400000
  section align                 1000
  file align                    1000
  required OS version           4.00
  image version                 0.00
  subsystem version             4.00
  Win32 Version                 0
  size of image                 1B000
  size of headers               1000
  checksum                      0
  Subsystem                     0003 (Windows character)
  DLL flags                     0000
  stack reserve size            100000
  stack commit size             1000
  heap reserve size             100000
  heap commit size              1000
  RVAs & sizes                  10
Data Directory
  EXPORT           rva: 00000000  size: 00000000
  IMPORT           rva: 00019000  size: 0000003C
  RESOURCE         rva: 0001A000  size: 00000459
  EXCEPTION        rva: 00000000  size: 00000000
  SECURITY         rva: 00000000  size: 00000000
  BASERELOC        rva: 00000000  size: 00000000
  DEBUG            rva: 00016620  size: 0000001C
  ARCHITECTURE     rva: 00000000  size: 00000000
  GLOBALPTR        rva: 00000000  size: 00000000
  TLS              rva: 00000000  size: 00000000
  LOAD_CONFIG      rva: 00000000  size: 00000000
  BOUND_IMPORT     rva: 00000000  size: 00000000
  IAT              rva: 000191CC  size: 00000190
  DELAY_IMPORT     rva: 00000000  size: 00000000
  COM_DESCRPTR     rva: 00000000  size: 00000000
  unused           rva: 00000000  size: 00000000
 
 
However, I am not sure if it is related to DEP, and why we need to check LOAD_CONFIG. Also, if we compile the code in VC6, we may get different results. Any hint?
 
======
Move xwlan's comment here:
 
if load config is available, os assume the exception handlers can be looked up in the table, if load config is not available, the os is not sure about whether the handler is valid or not, so it will simply invoke the handler.
my guess is:
it actually relate with safe exception handlers. compiler/linker generated handlers, new MS C compiler will add security cookie to ensure the stack is ok when invoke exception handler, the corresponding RVA is added to the look up table. so manually embedded assembler seh handler won't appear in the table,
os will consider it's an invalid handler.
 
a workaround is to sweep the load config directory in PE image, dynamically programming...
 
a trick to fool the OS...
modify image file as your own exe name.
 
// =========================================================================
 HMODULE h = GetModuleHandle(L"exchain.exe");
 PUCHAR Base = (PUCHAR)h;
 ULONG OldProtect;
 VirtualProtect(Base, 0x1000, PAGE_READWRITE, &OldProtect);
 IMAGE_NT_HEADERS *NtHeader = ImageNtHeader(Base);
 NtHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].VirtualAddress = 0;
 NtHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].Size = 0;
 VirtualProtect(Base, 0x1000, PAGE_READONLY, &OldProtect);
 //
===========30 hours later==================
 
Thanks Mike Marcelais for the following explanation:
 

Basically, you're running afowl of /SafeSEH.  /SafeSEH is incompatable with incremental linking, so it is probably disabled in debug builds.

 

What /SafeSEH is designed to do is prevent a buffer overrun (or other exploitable code) from overwriting the exception handler on the stack and point it at the hacker's code.  The way they do this is at compile time, a list of all valid exception handlers is built up, and at runtime, before a handler is called, it is checked to see if it is on the list.  [The loadconfig structure you find gives that list, and a bit in the header says whether the binary was built with /SafeSEH or not.]

 

If your ASM code was in an .asm file, then you'd use the .safeseh directive to tell the assembler (and hence, the linker), that this function is an exception handler function.  I don't know any mechansim in inline asm that will achieve the same effect.

 

If you compile with warnings enabled, you get warning C4733 telling you that you're going to explode at runtime. 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

error: failed to run custom build command for `proj-sys v0.27.0` note: To improve backtraces for build dependencies, set the CARGO_PROFILE_DEV_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation. Caused by: process didn't exit successfully: `E:\untitled4\proj-rust\target\debug\build\proj-sys-ebcc43bf773a7e8d\build-script-build` (exit code: 101) --- stdout cargo:rerun-if-env-changed=PROJ_NO_PKG_CONFIG cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-pc-windows-msvc cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_pc_windows_msvc cargo:rerun-if-env-changed=HOST_PKG_CONFIG cargo:rerun-if-env-changed=PKG_CONFIG cargo:rerun-if-env-changed=PROJ_STATIC cargo:rerun-if-env-changed=PROJ_DYNAMIC cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-pc-windows-msvc cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_pc_windows_msvc cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH cargo:rerun-if-env-changed=PKG_CONFIG_PATH cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-pc-windows-msvc cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_pc_windows_msvc cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-pc-windows-msvc cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_pc_windows_msvc cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR cargo:rustc-cfg=bundled_build CMAKE_TOOLCHAIN_FILE_x86_64-pc-windows-msvc = None CMAKE_TOOLCHAIN_FILE_x86_64_pc_windows_msvc = None HOST_CMAKE_TOOLCHAIN_FILE = None CMAKE_TOOLCHAIN_FILE = None CMAKE_GENERATOR_x86_64-pc-windows-msvc = None CMAKE_GENERATOR_x86_64_pc_windows_msvc = None HOST_CMAKE_GENERATOR = None CMAKE_GENERATOR = None CMAKE_PREFIX_PATH_x86_64-pc-windows-msvc = None CMAKE_PREFIX_PATH_x86_64_pc_windows_msvc = None HOST_CMAKE_PREFIX_PATH = None CMAKE_PREFIX_PATH = None CMAKE_x86_64-pc-windows-msvc = None CMAKE_x86_64_pc_windows_msvc = None HOST_CMAKE = None CMAKE = None running: "cmake" "E:\\untitled4\\proj-rust\\target\\debug\\build\\proj-sys-5e690173b1e55b77\\out\\PROJSRC/proj/proj-9.6.2" "-G" "Visual Studio 17 2022" "-Thost=x64" "-Ax64" "-DBUILD_SHARED_LIBS=OFF" "-DBUILD_TESTING=OFF" "-DBUILD_CCT=OFF" "-DBUILD_CS2CS=OFF" "-DBUILD_GEOD=OFF" "-DBUILD_GIE=OFF" "-DBUILD_PROJ=OFF" "-DBUILD_PROJINFO=OFF" "-DBUILD_PROJSYNC=OFF" "-DENABLE_CURL=OFF" "-DENABLE_TIFF=OFF" "-DCMAKE_INSTALL_PREFIX=E:\\untitled4\\proj-rust\\target\\debug\\build\\proj-sys-5e690173b1e55b77\\out" "-DCMAKE_C_FLAGS= -nologo -MD -Brepro" "-DCMAKE_C_FLAGS_RELEASE= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS_RELEASE= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS_RELEASE= -nologo -MD -Brepro" "-DCMAKE_BUILD_TYPE=Release" -- Requiring C++17 -- Requiring C++17 - done -- Requiring C99 -- Requiring C99 - done -- Configuring PROJ: -- PROJ_VERSION = 9.6.2 -- nlohmann/json: internal -- Configuring incomplete, errors occurred! --- stderr pkg-config unable to find existing libproj installation: pkg-config exited with status code 1 > PKG_CONFIG_PATH=C:\OSGeo4W64\lib\pkgconfig PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 pkg-config --libs --cflags proj 'proj >= 9.6.2' The system library `proj` required by crate `proj-sys` was not found. The file `proj.pc` needs to be installed and the PKG_CONFIG_PATH environment variable must contain its parent directory. PKG_CONFIG_PATH contains the following: - C - \OSGeo4W64\lib\pkgconfig HINT: you may need to install a package such as proj, proj-dev or proj-devel. disabling tiff support CMake Error at CMakeLists.txt:211 (message): sqlite3 binary not found! CMake Error at E:/Rustrover/CMake/share/cmake-4.1/Modules/FindPackageHandleStandardArgs.cmake:227 (message): Could NOT find SQLite3 (missing: SQLite3_LIBRARY SQLite3_INCLUDE_DIR) Call Stack (most recent call first): E:/Rustrover/CMake/share/cmake-4.1/Modules/FindPackageHandleStandardArgs.cmake:591 (_FPHSA_FAILURE_MESSAGE) E:/Rustrover/CMake/share/cmake-4.1/Modules/FindSQLite3.cmake:82 (find_package_handle_standard_args) CMakeLists.txt:224 (find_package) thread 'main' panicked at C:\Users\发光美西螈\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cmake-0.1.54\src\lib.rs:1119:5: command did not execute successfully, got: exit code: 1 build script failed, must exit now stack backtrace: 0: std::panicking::begin_panic_handler at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\std\src\panicking.rs:697 1: core::panicking::panic_fmt at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\core\src\panicking.rs:75 2: cmake::find_exe::{{closure}} 3: <cmake::Version as core::default::Default>::default 4: cmake::Config::build 5: build_script_build::main::{{closure}} 6: build_script_build::main::{{closure}} 7: core::result::Result<T,E>::or_else 8: build_script_build::main 9: core::ops::function::FnOnce::call_once 10: std::ffi::os_str::OsString::new 11: std::rt::lang_start::{{closure}} 12: std::rt::lang_start_internal::closure$0 at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\std\src\rt.rs:175 13: std::panicking::catch_unwind::do_call at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\std\src\panicking.rs:589 14: std::panicking::catch_unwind at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\std\src\panicking.rs:552 15: std::panic::catch_unwind at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\std\src\panic.rs:359 16: std::rt::lang_start_internal at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\std\src\rt.rs:171 17: std::rt::lang_start 18: main 19: invoke_main at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78 20: __scrt_common_main_seh at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288 21: BaseThreadInitThunk 22: RtlUserThreadStart note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
09-24
* 正在执行任务: C/C++: gcc.exe 生成活动文件 正在启动生成... cmd /c chcp 65001>nul && E:\VScode\mingw64\bin\gcc.exe -fdiagnostics-color=always -g D:\Code-CaoZuo\1.cpp -o D:\Code-CaoZuo\1.exe C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `priorityScheduling(PCB*)': D:/Code-CaoZuo/1.cpp:31: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:31: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:68: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:69: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:69: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:69: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/1.cpp:69: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:69: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:69: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:70: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:70: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:70: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:70: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:70: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:80: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:80: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/1.cpp:80: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:80: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:86: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:86: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `roundRobinScheduling(PCB*)': D:/Code-CaoZuo/1.cpp:91: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:91: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:130: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:131: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:131: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:131: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/1.cpp:131: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:131: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:131: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:132: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:132: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:132: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:132: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:132: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:146: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:146: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/1.cpp:146: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:146: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:164: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:164: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `createProcesses(int, bool)': D:/Code-CaoZuo/1.cpp:175: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/1.cpp:178: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:178: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/1.cpp:178: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:178: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:180: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:181: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/1.cpp:185: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:186: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/1.cpp:188: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:189: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/1.cpp:191: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/1.cpp:191: undefined reference to `operator new(unsigned long long)' D:/Code-CaoZuo/1.cpp:191: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/1.cpp:200: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:175: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/1.cpp:203: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/1.cpp:191: undefined reference to `operator delete(void*, unsigned long long)' D:/Code-CaoZuo/1.cpp:191: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/1.cpp:175: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `displayProcesses(PCB*)': D:/Code-CaoZuo/1.cpp:208: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:208: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:209: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:209: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:213: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/1.cpp:213: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:213: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:213: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:213: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:213: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:214: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:214: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:214: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/1.cpp:214: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:217: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:218: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:219: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:221: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `freeProcesses(PCB*)': D:/Code-CaoZuo/1.cpp:233: undefined reference to `operator delete(void*, unsigned long long)' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `main': D:/Code-CaoZuo/1.cpp:241: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:241: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:242: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:242: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:243: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:243: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:244: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:245: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/1.cpp:247: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:248: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/1.cpp:254: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:263: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/1.cpp:263: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/1.cpp:267: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `__tcf_0': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/iostream:74: undefined reference to `std::ios_base::Init::~Init()' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `__static_initialization_and_destruction_0': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/iostream:74: undefined reference to `std::ios_base::Init::Init()' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o:1.cpp:(.xdata+0x34): undefined reference to `__gxx_personality_seh0' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `PCB::PCB(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int, int)': D:/Code-CaoZuo/1.cpp:26: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `PCB::~PCB()': D:/Code-CaoZuo/1.cpp:13: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > __gnu_cxx::__to_xstring<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>(int (*)(char*, unsigned long long, char const*, char*), unsigned long long, char const*, ...)': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/string_conversions.h:115: undefined reference to `std::allocator<char>::allocator()' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/string_conversions.h:115: undefined reference to `std::allocator<char>::~allocator()' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/string_conversions.h:115: undefined reference to `std::allocator<char>::~allocator()' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o:1.cpp:(.xdata$_ZN9__gnu_cxx12__to_xstringINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEET_PFiPT0_yPKS8_PcEySB_z+0xc): undefined reference to `__gxx_personality_seh0' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::~_Alloc_hider()': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:139: undefined reference to `std::allocator<char>::~allocator()' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:5979: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::insert(unsigned long long, char const*)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:5979: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<char*, void>(char*, char*, std::allocator<char> const&)': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:606: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_local_data()' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:606: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::_Alloc_hider(char*, std::allocator<char> const&)' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o:1.cpp:(.xdata$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_+0xc): undefined reference to `__gxx_personality_seh0' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag)': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:212: undefined reference to `std::__throw_logic_error(char const*)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:219: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long long&, unsigned long long)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:219: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data(char*)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:220: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_capacity(unsigned long long)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:225: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data() const' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:225: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy_chars(char*, char*, char*)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:232: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_set_length(unsigned long long)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:226: undefined reference to `__cxa_begin_catch' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:228: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:229: undefined reference to `__cxa_rethrow' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:226: undefined reference to `__cxa_end_catch' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o:1.cpp:(.xdata$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag+0xc): undefined reference to `__gxx_personality_seh0' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o:1.cpp:(.rdata$.refptr._ZSt3cin[.refptr._ZSt3cin]+0x0): undefined reference to `std::cin' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o:1.cpp:(.rdata$.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_[.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_]+0x0): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' C:\Users\HUAWEI\AppData\Local\Temp\ccaKY5Jy.o:1.cpp:(.rdata$.refptr._ZSt4cout[.refptr._ZSt4cout]+0x0): undefined reference to `std::cout' collect2.exe: error: ld returned 1 exit status 生成已完成,但出现错误。 * 终端进程启动失败(退出代码: -1)。 * 终端将被任务重用,按任意键关闭。 * 正在执行任务: C/C++: gcc.exe 生成活动文件 正在启动生成... cmd /c chcp 65001>nul && E:\VScode\mingw64\bin\gcc.exe -fdiagnostics-color=always -g D:\Code-CaoZuo\11.cpp -o D:\Code-CaoZuo\11.exe C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `priorityScheduling(PCB*)': D:/Code-CaoZuo/11.cpp:31: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:31: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:68: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:69: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:69: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:69: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/11.cpp:69: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:69: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:69: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:70: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:70: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:70: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:70: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:70: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:80: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:80: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/11.cpp:80: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:80: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:86: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:86: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `roundRobinScheduling(PCB*)': D:/Code-CaoZuo/11.cpp:91: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:91: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:130: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:131: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:131: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:131: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/11.cpp:131: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:131: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:131: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:132: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:132: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:132: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:132: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:132: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:146: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:146: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/11.cpp:146: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:146: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:164: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:164: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `createProcesses(int, bool)': D:/Code-CaoZuo/11.cpp:175: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/11.cpp:178: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:178: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/11.cpp:178: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:178: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:180: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:181: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/11.cpp:185: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:186: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/11.cpp:188: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:189: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/11.cpp:191: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/11.cpp:191: undefined reference to `operator new(unsigned long long)' D:/Code-CaoZuo/11.cpp:191: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/11.cpp:200: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:175: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/11.cpp:203: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/11.cpp:191: undefined reference to `operator delete(void*, unsigned long long)' D:/Code-CaoZuo/11.cpp:191: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' D:/Code-CaoZuo/11.cpp:175: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `displayProcesses(PCB*)': D:/Code-CaoZuo/11.cpp:208: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:208: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:209: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:209: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:213: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/Code-CaoZuo/11.cpp:213: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:213: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:213: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:213: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:213: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:214: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:214: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:214: undefined reference to `std::ostream::operator<<(int)' D:/Code-CaoZuo/11.cpp:214: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:217: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:218: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:219: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:221: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `freeProcesses(PCB*)': D:/Code-CaoZuo/11.cpp:233: undefined reference to `operator delete(void*, unsigned long long)' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `main': D:/Code-CaoZuo/11.cpp:241: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:241: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:242: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:242: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:243: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:243: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:244: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:245: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/11.cpp:247: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:248: undefined reference to `std::istream::operator>>(int&)' D:/Code-CaoZuo/11.cpp:254: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:263: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' D:/Code-CaoZuo/11.cpp:263: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' D:/Code-CaoZuo/11.cpp:267: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `__tcf_0': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/iostream:74: undefined reference to `std::ios_base::Init::~Init()' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `__static_initialization_and_destruction_0': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/iostream:74: undefined reference to `std::ios_base::Init::Init()' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o:11.cpp:(.xdata+0x34): undefined reference to `__gxx_personality_seh0' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `PCB::PCB(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int, int)': D:/Code-CaoZuo/11.cpp:26: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `PCB::~PCB()': D:/Code-CaoZuo/11.cpp:13: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > __gnu_cxx::__to_xstring<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>(int (*)(char*, unsigned long long, char const*, char*), unsigned long long, char const*, ...)': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/string_conversions.h:115: undefined reference to `std::allocator<char>::allocator()' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/string_conversions.h:115: undefined reference to `std::allocator<char>::~allocator()' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/string_conversions.h:115: undefined reference to `std::allocator<char>::~allocator()' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o:11.cpp:(.xdata$_ZN9__gnu_cxx12__to_xstringINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEET_PFiPT0_yPKS8_PcEySB_z+0xc): undefined reference to `__gxx_personality_seh0' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::~_Alloc_hider()': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:139: undefined reference to `std::allocator<char>::~allocator()' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:5979: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::insert(unsigned long long, char const*)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:5979: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<char*, void>(char*, char*, std::allocator<char> const&)': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:606: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_local_data()' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.h:606: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::_Alloc_hider(char*, std::allocator<char> const&)' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o:11.cpp:(.xdata$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_+0xc): undefined reference to `__gxx_personality_seh0' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag)': E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:212: undefined reference to `std::__throw_logic_error(char const*)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:219: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long long&, unsigned long long)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:219: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data(char*)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:220: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_capacity(unsigned long long)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:225: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data() const' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:225: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy_chars(char*, char*, char*)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:232: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_set_length(unsigned long long)' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:226: undefined reference to `__cxa_begin_catch' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:228: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:229: undefined reference to `__cxa_rethrow' E:/VScode/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/basic_string.tcc:226: undefined reference to `__cxa_end_catch' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o:11.cpp:(.xdata$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag+0xc): undefined reference to `__gxx_personality_seh0' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o:11.cpp:(.rdata$.refptr._ZSt3cin[.refptr._ZSt3cin]+0x0): undefined reference to `std::cin' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o:11.cpp:(.rdata$.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_[.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_]+0x0): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' C:\Users\HUAWEI\AppData\Local\Temp\cc45uoJX.o:11.cpp:(.rdata$.refptr._ZSt4cout[.refptr._ZSt4cout]+0x0): undefined reference to `std::cout' collect2.exe: error: ld returned 1 exit status 生成已完成,但出现错误。 * 终端进程启动失败(退出代码: -1)。 * 终端将被任务重用,按任意键关闭。
最新发布
09-29
<think>根据提供的引用信息和用户需求,用户在使用gcc.exe编译C++文件时遇到"undefined reference"错误,主要涉及标准库函数(如std::cout)未定义引用。这类错误通常与链接器未能正确链接C++标准库有关。下面将结合引用内容分析并提供解决方案。 ### 问题分析 引用[1][2][3][5]中出现的错误信息均指向C++标准库函数未定义引用(如`std::cout`, `std::ostream::operator<<`等)。引用[4]明确指出原因: > gcc:会把.c的程序当作是C的源程序进行编译,.cpp的程序当作是C++的源程序进行编译 > 解决上面的错误,就是把gcc编译器换成g++编译器。 这表明: 1. 虽然gcc可以编译C++文件(.cpp),但**默认不会自动链接C++标准库**。 2. g++是GCC中专用于C++的编译器驱动,它会**自动链接C++标准库(libstdc++)**。 ### 解决方案 #### 方法1:使用g++代替gcc(推荐) 直接使用g++编译器编译链接C++程序: ```bash g++ 1.cpp 11.cpp -o output ``` - `g++`会自动处理C++标准库的链接。 - `-o output`指定输出文件名(可选)。 #### 方法2:显式链接C++标准库(手动指定链接器) 若坚持使用gcc命令,需手动添加C++标准库链接选项: ```bash gcc 1.cpp 11.cpp -lstdc++ -o output ``` - `-lstdc++`:显式链接GNU C++标准库(libstdc++.so)。 - 注意:某些平台可能需要附加库(如`-lm`数学库),但C++标准库是核心依赖。 ### 补充说明 1. **头文件问题**:引用[2][3]中出现了自定义头文件相关的未定义引用错误。确保头文件中函数声明与实现一致,且源文件正确包含头文件。但当前错误集中在标准库,优先解决链接问题。 2. **编译环境**:引用[5]提到Ubuntu下Code::Blocks默认使用g++,但工程设置可能误选gcc。检查IDE的编译器设置,确保选择**g++**而非gcc。 ### 操作验证 1. 编写测试文件`test.cpp`: ```cpp #include <iostream> int main() { std::cout << "Hello, C++!" << std::endl; return 0; } ``` 2. 使用推荐方法编译: ```bash g++ test.cpp -o test && ./test ``` 预期输出:`Hello, C++!` ### 注意事项 - **多文件编译**:同时编译多个.cpp文件时,确保所有文件都参与编译链接(如`g++ 1.cpp 11.cpp`)。 - **命名规范**:避免使用`cc`作为C++源文件后缀(某些系统可能混淆),建议统一用`.cpp`。 ### 引用依据 引用[4]明确指出使用g++替代gcc可解决此类问题[^4]。引用[1][3][5]中的错误示例均通过此方案解决。 §§相关问题§§ 1. gcc和g++的主要区别是什么? 2. 如何检查系统是否安装了g++编译器? 3. Linux下如何安装g++编译器? 4. 除了链接问题,还有哪些常见原因会导致"undefined reference"错误? </think>### C++编译中"undefined reference"错误的解决方法 根据您提供的引用信息和错误描述,您在使用`gcc.exe`编译C++文件时遇到`undefined reference`错误(如`std::cout`未定义引用)。这是典型的**C++标准库链接问题**,以下是结构化解决方案: --- ### 原因分析 1. **编译器选择不当**: - `gcc`(GCC C编译器)默认不会自动链接C++标准库(libstdc++.so/libstdc++.a) - `g++`(GCC C++编译器)会自动链接必需的C++库 - 引用[4]明确指出:**gcc不会自动链接C++标准库**,而g++会[^4] 2. **错误表现**: - 所有错误均指向标准库符号(`std::cout`, `std::ostream::operator<<`等) - 错误格式为`undefined reference to ...`(链接阶段失败) --- ### 解决方案(任选其一) #### ✅ 方法1:使用g++代替gcc(推荐) ```bash g++ 1.cpp 11.cpp -o output ``` - **原理**:g++自动处理C++标准库链接 - **验证命令**:`g++ --version` 确认已安装g++ #### ✅ 方法2:显式链接C++标准库(使用gcc时) ```bash gcc 1.cpp 11.cpp -lstdc++ -o output ``` - **关键参数**:`-lstdc++` 强制链接C++标准库 - **附加建议**:添加`-no-pie`选项解决某些平台的PIE冲突 #### ✅ 方法3:完整编译链命令(适用于复杂项目) ```bash gcc -c 1.cpp # 编译为对象文件 gcc -c 11.cpp # 编译为对象文件 g++ 1.o 11.o -o output # 用g++链接 ``` --- ### 补充说明 1. **环境检查**: - 执行`whereis g++`确认g++路径 - 若未安装g++: - Windows(MinGW):重装MinGW并勾选`g++`组件 - Linux:`sudo apt install g++` 2. **VSCode配置**(引用[2][5]相关): ```json // tasks.json "tasks": [{ "type": "cppbuild", "label": "C/C++: g++.exe", "command": "g++", "args": ["-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"] }] ``` 确保使用`g++`而非`gcc`[^2][^5] 3. **头文件问题**(引用[2][3]): - 自定义头文件需正确包含:`#include "your_header.h"` - 实现文件需参与编译(如`g++ header.cpp main.cpp`) --- ### 引用依据 > "解决上面的错误,就是把gcc编译器换成g++编译器" —— 引用[4]明确说明gcc/g++标准库处理差异[^4] > "undefined reference to std::cout"错误模式与引用[1][3][5]完全一致,均属于C++库链接缺失问题[^1][^3][^5]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值