gcc链接器错误:未定义引用`__security_cookie'

时间:2014-02-07 12:18:39

标签: gcc curl dll linker

with gcc我想构建一个使用Curl lib的DLL

$gcc -shared -o GA_TestLibV11.dll GA_TestLibV11.o GA_TestLibV11.def curllib_static.lib

$ gcc -shared -o GA_TestLibV11.dll GA_TestLibV11.o GA_TestLibV11.def curllib_static.lib -llibws2_32

我收到以下警告(多次出现)

警告:.drectve` / manifestdependency:“type ='win32'name ='Microsoft.VC90.CRT'v ersion ='9.0.21022.8'processorArchitecture ='x86'publicKeyToken ='1fc8b3b9a1e18e3 b'“/ DEFAULTLIB:”MSVCRT“/ DEFAULTLIB:”OLDNAMES“'无法识别

以及以下错误:

curllib_static.lib(./Release/easy.obj):(.text[_win32_init]+0x7): undefined reference to `__security_cookie'

curllib_static.lib(./Release/easy.obj):(.text[_win32_init]+0x41): undefined reference to `@__security_check_cookie@4'

c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: curllib_st
atic.lib(./Release/easy.obj): bad reloc address 0x41 in section `.text[_win32_in
it]'
collect2.exe: error: ld returned 1 exit status

我还需要链接哪些来解决这些问题?

感谢。

1 个答案:

答案 0 :(得分:3)

您需要链接其中一个bufferoverflow.lib库,

  

bufferoverflowU.lib 此库实现安全功能   可以在用户模式和中使用的cookie验证   使用Win32 API的应用程序。大多数应用程序链接到此   图书馆。

     

bufferoverflowK.lib 这个库实现了对a的检查   在操作系统的内核模式下工作的安全cookie。   必须链接在内核模式下运行的服务和子系统   到这个图书馆。

     

bufferoverflow.lib 此库实现   可用于安全性cookie验证的功能   用户模式。但是,bufferoverflow.lib不同于   bufferoverflowU.lib因为bufferoverflow.lib可以在服务中使用   以及不使用Win32 API的应用程序。

请参阅You may receive the "Linker tools error LNK2001" error messages when you build source code by using the Win32 Software Development Kit (SDK) or the Windows Server 2003 Driver Development Kit (DDK) for Windows Server 2003 Service Pack 1

或者,您必须在没有/GS编译器开关的情况下重建 curl

  

在Microsoft Visual Studio 2002中,一个名为“的新编译器开关”   / GS“已经引入Microsoft Visual C ++编译器。何时   设置“/ GS”开关后,编译器会注入缓冲区溢出   检测编译代码中的代码。