草庐IT

c - 在研究缓冲区溢出时我应该使用哪个版本的 GCC 或标志?

最近,作为一名计算机工程专业的本科生,我一直在研究缓冲区溢出问题。出于兴趣,我开始研究和研究缓冲区溢出,但是当我试图在我自己的计算机上用GCC4.9.1(在DebianJessie中)编译的C程序中实现它们时遇到了困难。我听说在较新的编译器中有各种堆栈溢出保护,所以我认为我的问题是我的编译器版本太新了。要么,要么我没有使用正确的标志(无)进行编译。那么是否有适合我的GCC版本来测试缓冲区溢出?还是我应该使用特定标志来防止堆栈保护和金丝雀?感谢您的宝贵时间。 最佳答案 使用-zexecstack-fno-stack-protector

c - 在研究缓冲区溢出时我应该使用哪个版本的 GCC 或标志?

最近,作为一名计算机工程专业的本科生,我一直在研究缓冲区溢出问题。出于兴趣,我开始研究和研究缓冲区溢出,但是当我试图在我自己的计算机上用GCC4.9.1(在DebianJessie中)编译的C程序中实现它们时遇到了困难。我听说在较新的编译器中有各种堆栈溢出保护,所以我认为我的问题是我的编译器版本太新了。要么,要么我没有使用正确的标志(无)进行编译。那么是否有适合我的GCC版本来测试缓冲区溢出?还是我应该使用特定标志来防止堆栈保护和金丝雀?感谢您的宝贵时间。 最佳答案 使用-zexecstack-fno-stack-protector

c - GCC 不再实现 <varargs.h>

我必须将此代码片段从varargs.h更改为stdarg.h,但我不知Prop体如何:#ifndeflintintll_log(va_alist)va_dcl{intevent,result;LLog*lp;va_listap;va_start(ap);lp=va_arg(ap,LLog*);event=va_arg(ap,int);result=_ll_log(lp,event,ap);va_end(ap);returnresult;}当我尝试构建它时,编译器说:error"GCCnolongerimplements."error"Reviseyourcodetouse."我需要编译

c - GCC 不再实现 <varargs.h>

我必须将此代码片段从varargs.h更改为stdarg.h,但我不知Prop体如何:#ifndeflintintll_log(va_alist)va_dcl{intevent,result;LLog*lp;va_listap;va_start(ap);lp=va_arg(ap,LLog*);event=va_arg(ap,int);result=_ll_log(lp,event,ap);va_end(ap);returnresult;}当我尝试构建它时,编译器说:error"GCCnolongerimplements."error"Reviseyourcodetouse."我需要编译

c++ - Windows 与 Linux GCC argv[0] 值

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Getpathofexecutable我在Windows上使用MinGW、gcc4.4.3进行编程。当我像这样使用主要功能时:intmain(intargc,char*argv[]){cout在Windows上,我得到这样的完整路径:“C:/dev/stuff/bin/Test”。然而,当我在Linux上运行相同的应用程序时,我得到了某种相对路径:“bin/Test”。它破坏了我的应用程序!关于如何确保两个系统上的路径都是绝对路径的任何想法?

c++ - Windows 与 Linux GCC argv[0] 值

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Getpathofexecutable我在Windows上使用MinGW、gcc4.4.3进行编程。当我像这样使用主要功能时:intmain(intargc,char*argv[]){cout在Windows上,我得到这样的完整路径:“C:/dev/stuff/bin/Test”。然而,当我在Linux上运行相同的应用程序时,我得到了某种相对路径:“bin/Test”。它破坏了我的应用程序!关于如何确保两个系统上的路径都是绝对路径的任何想法?

c - 我的 linux 的 gcc 编译器不支持 boolean 值

这个问题在这里已经有了答案:UsingbooleanvaluesinC(18个答案)关闭9年前。我正在尝试创建一个返回类型为boolean值的函数...程序的语法似乎是正确的,但编译器给出了错误...我包含的头文件是:#include#include我创建的函数是:34.boolchecknull(structnode*node){35.if(node!=NULL)36.returnTRUE;37.38.returnfalse;39.}我在编译时得到的是bininsertion.c:34:1:error:unknowntypename‘bool’bininsertion.c:Infun

c - 我的 linux 的 gcc 编译器不支持 boolean 值

这个问题在这里已经有了答案:UsingbooleanvaluesinC(18个答案)关闭9年前。我正在尝试创建一个返回类型为boolean值的函数...程序的语法似乎是正确的,但编译器给出了错误...我包含的头文件是:#include#include我创建的函数是:34.boolchecknull(structnode*node){35.if(node!=NULL)36.returnTRUE;37.38.returnfalse;39.}我在编译时得到的是bininsertion.c:34:1:error:unknowntypename‘bool’bininsertion.c:Infun

c++ - 带有 gcc 4.4.7 的 CentOS 5.8 链接到 libstdc++ 6.0.8。这怎么可能?

根据gccABI策略,gcc4.4.7应该依赖于libstdc++6.0.13。据我所知,编译器版本和libstdc++版本是密切相关的,不能互换,所以我惊讶地发现以下事实:CentOS5.8以某种方式设法拥有一个链接到6.0.8的gcc44软件包,显然是默认系统(基于gcc-4.1.2)附带的编译器目录(/usr/lib/gcc/x86_64-redhat-linux6E/4.4.7,我希望在其中找到libstdc++-6.0.13)中的libstdc++.so不是指向共享对象的链接任何类型的,但包含INPUT(-lstdc++_nonshared/usr/lib64/libstdc

c++ - 带有 gcc 4.4.7 的 CentOS 5.8 链接到 libstdc++ 6.0.8。这怎么可能?

根据gccABI策略,gcc4.4.7应该依赖于libstdc++6.0.13。据我所知,编译器版本和libstdc++版本是密切相关的,不能互换,所以我惊讶地发现以下事实:CentOS5.8以某种方式设法拥有一个链接到6.0.8的gcc44软件包,显然是默认系统(基于gcc-4.1.2)附带的编译器目录(/usr/lib/gcc/x86_64-redhat-linux6E/4.4.7,我希望在其中找到libstdc++-6.0.13)中的libstdc++.so不是指向共享对象的链接任何类型的,但包含INPUT(-lstdc++_nonshared/usr/lib64/libstdc