C++
jimmyleeee
从事应用安全十余年,一直在努力......
展开
-
Object C的文件扩展名和含义
Object C的项目中可能包含多种文件,有Object C,C、C++还有Object C++等等文件,他们的扩展名也有所不同,本文是将扩展名和文件的意义罗列如下: 扩展名 文件类型 .h C/C++/Objective-C 的头文件 .m Objective-C的实现文件 .mm Objective-C++的实现文件 .cc C++的实现文件 .c C的实现文件 针对不同语言的实现文件,需要严格定义扩展名...原创 2020-12-21 10:47:27 · 543 阅读 · 0 评论 -
configure: error: C preprocessor “/lib/cpp“ fails sanity check
使用clang编译postgresssql时,遇到如下错误:configure: error: C preprocessor "/lib/cpp" fails sanity check查了网上的,都说没有安装glibc-headers 和gcc-c++, 但是,执行yuminstallglibc-headers和yuminstallgcc-c++,显示已经安装了。因为使用clang编译的,所以,怀疑很大可能是找不到clang编译器, 但是,已经把clang所在的路径...原创 2020-08-19 16:27:26 · 6209 阅读 · 1 评论 -
Object-C 与C/C++的区别
1)Object C 的类只能继承一个类,不能继承多个类,如果要实现类似多个继承,需要使用Category和Extension, Extension是没有名字的Category,也就是匿名Category。2)Object C从2011年引入了Automatic Reference Counting (ARC),支持垃圾收集,不需要担心内存泄露的问题;而C++依然不支持,需要自己手工管理内存...原创 2020-04-14 16:06:14 · 6574 阅读 · 1 评论 -
CentOS 7 如何安装gcc
CentOS使用yum安装,首先执行 yum install gcc,安装gcc编译器,然后通过命令 gcc -v 检测是否安装成功。然后yum install gcc-c++ 安装g++,同样通过命令g++ -v 检测是否安装成功。...原创 2020-03-18 17:39:41 · 1611 阅读 · 1 评论 -
PHP Warning: PHP Startup: Unable to load dynamic library 'xxx.so'
今天执行 php -dextension=vld.so -dvld.active=1 -dvld.verbosity=0 -dvld.dump_paths=0 CConst.php 时,遇到一个错误:PHP Warning: PHP Startup: Unable to load dynamic library 'vld.so' (tried: /usr/lib64/php/modules/v...原创 2020-01-15 15:17:57 · 547 阅读 · 0 评论 -
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
在CentOS7的64位操作系统上安装gcc8.3.0在configure遇到如下错误:configure: error: in `/opt/gcc-8.3.0/host-x86_64-pc-linux-gnu/gcc':configure: error: C++ preprocessor "/lib/cpp" fails sanity check解决方案: 执行 yum insta...原创 2019-12-16 15:21:50 · 427 阅读 · 0 评论 -
/usr/bin/ld: cannot find crt1.o: No such file or directory
最近在CentOS7的64位机器上,通过编译源代码安装gcc8.3.0时遇到一个问题如下;/usr/bin/ld: cannot find crt1.o: No such file or directory/usr/bin/ld: cannot find crti.o: No such file or directory看了好多网上的解决方案:有的是把crtl1.o的路径加入PATH,有...原创 2019-12-16 15:14:39 · 14702 阅读 · 7 评论 -
/usr/bin/ld.gold: --push-state: unknown option
编译一个工具时,编译都正常通过,但是,却在链接时发生如下错误:执行:ld.gold --help, 确实没有发现--push-state 选项。执行ld.gold -v 显示版本信息如下:由于gold链接是binutils的一部分,所以先从https://ftp.gnu.org/gnu/binutils/下载一个最新的版本,我下载的是2.33.1,解压之后,执行命令:...原创 2019-12-09 11:24:12 · 1099 阅读 · 0 评论 -
No usable m4 in $PATH or /usr/5bin
今天编译一个工具遇到错误:解决方案:1) 从https://pkgs.org/download/m4根据操作系统类型和版本下载安装包安装2) 执行 yum install m4再次执行编译命令,可以继续编译。...原创 2019-12-06 23:14:00 · 2765 阅读 · 0 评论 -
CentOS 如何卸载GCC
在CentOS系统中安装了gcc 4.8.5之后,发现版本太低,于是,就直接安装了gcc6.5.0,执行gcc -v命令显示如下:结果执行Cmake的时候,依然提示使用的还是4.8.5,如下图:使用 “rpm -e gcc-c++-4.8.5-39.el7.x86_64”,结果提示:于是,再执行rpm -e gcc-c++-4.8.5-39.el7.x86_64, 然后再...原创 2019-12-06 17:03:39 · 4485 阅读 · 3 评论 -
安装ninja遇到 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
从https://github.com/ninja-build/ninja/releases下载ninja,设置好PATH路径,执行ninja命令显示如下:[root@test bin]# ./ninja -v./ninja: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by./ninja)./n...原创 2019-12-05 13:34:11 · 648 阅读 · 0 评论 -
target_compile_features no known features for CXX compiler
编译一个项目报错如下:CMake Error at Rx/v2/test/CMakeLists.txt:125 (target_compile_features): target_compile_features no known features for CXX compiler "" version .经过调查,可能是由于target_compile_features ...原创 2019-09-19 10:23:32 · 6715 阅读 · 8 评论 -
boost::format 参数个数不匹配
在C语言中,如果字符串个数不匹配时,会导致内存信息泄露。Boost也提供了format的类用来处理格式化参数,对于格式化参数不匹配,boost的format会如何处理?首先,看一段代码:#include <boost/algorithm/string.hpp>#include <boost/format.hpp>#include<iostream>...原创 2019-09-16 11:41:21 · 721 阅读 · 0 评论 -
C++ 虚函数表的布局
针对虚函数表的结构与布局,写了一个程序验证一下:首先看单一继承的情况:class Base{public: virtual void x() { cout << "Base::x()" << endl; } virtual void y() { cout << "Base::y()" << endl; } virtual void...原创 2019-08-28 10:32:29 · 213 阅读 · 0 评论 -
如何使用LLVM的库 demangle
程序代码如下:#include <string.h>#include <stdlib.h>#include <stdio.h>#include "llvm/Demangle/Demangle.h"int main (){ const char* pcmangledname = "_ZNSsaSEPKc"; int status = 0...原创 2019-08-22 16:21:55 · 1100 阅读 · 0 评论 -
安装与升级gcc
今天,安装了一个CentOS,居然没有gcc。于是安装GCC,并记录一下安装过程。使用yum直接安装gcc也可以,但是,由于默认的版本是4.8.5,执行yum list | grep gcc,查看如下图:太低,不符合需求,所以,就选择了安装最新的版本。使用源代码安装的一般比较麻烦的有两个方面:第一、一旦遇到编译错误,会比较难以排错;第二,如果不覆盖原来的文件的话,需要设置环境变量,比较...原创 2019-08-21 10:27:14 · 632 阅读 · 0 评论 -
C++ 虚函数表中的函数的索引
C++的虚函数表的结构在有析构函数和没有析构函数的情况下,还是有一定的区别的,主要区别如下:首先是没有析构函数的情况,代码如下:class test {public: virtual void foo() { cout << "foo" << endl; } void moo(){ cout << "moo" <&l...原创 2019-08-14 15:06:44 · 359 阅读 · 0 评论 -
undefined reference to `vtable for __cxxabiv1::__class_type_info'
今天编译一个程序需要使用虚函数的类,想探索一下虚函数表的结构,结果总是在链接的时候报错如下:undefined reference to `vtable for __cxxabiv1::__class_type_info'编译命令是:gcc virtualtable.cpp -o virtualtable经过探索,原来是在链接的时候,需要使用C++的库,而默认是不使用的,所以必须添...原创 2019-08-14 14:08:00 · 3923 阅读 · 1 评论 -
__owur 的作用是什么
根据介绍“New macro __owur for "OpenSSL Warn Unused Result". This makes use ofa gcc attribute to warn if the result of a function is ignored. This is enable if DEBUG_UNUSED is set. Add to several functions...原创 2019-08-09 09:31:03 · 1479 阅读 · 0 评论 -
用Clang编译出现错误的解决方法
用Clang编译器编译opencv,遇到如下错误:In file included from /tool/app/gnu/gcc-8.2.0/lib/gcc/x86_64-redhat-linux/8.2.0/include/emmintrin.h:31:/tool/app/gnu/gcc-8.2.0/lib/gcc/x86_64-redhat-linux/8.2.0/include/xmm...原创 2019-05-14 10:59:26 · 7764 阅读 · 0 评论 -
windbg常用命令
<br />FROM: http://www.xuyibo.org/kb/273.htm<br />1 !address eax查看对应内存页的属性<br />2 vertarget 显示当前进程的大致信息<br />3 !peb 显示process Environment Block<br />4 lmvm 可以查看任意一个dll的详细信息<br />例如:0:026 lmvm msvcrt (deferred)表示察看msvcrt.dll的信息,但是没有加载<br />symbol可以通过.reload转载 2011-01-12 15:16:00 · 445 阅读 · 0 评论 -
操作系统标识宏
查看gcc所定义的宏的命令:cpp -dM /dev/null命令一: cpp -dM /dev/null命令二: gcc -dM -E - 1:OS MACRO: WINDOWS: _WIN32、WIN32; UNIX/LINUX: unix、__unix、__unix__; SunOS/SOLARIS: __SVR4、__svr4__、sun、__sun、__sun__、sparc、__转载 2011-06-20 09:28:00 · 1339 阅读 · 0 评论 -
Solaris 10 如何解决:/usr/include/sys/siginfo.h:259: error: ‘ctid_t‘ is used as a type, but is not
/usr/include/sys/siginfo.h:259: error: ctid_t is used as a type, but is not defined as a type./usr/include/sys/siginfo.h:390: error: ctid_t is used as a type, but is not defined as a type.In原创 2011-06-27 16:22:00 · 1549 阅读 · 1 评论 -
安装Solaris系统的指导网站
http://gcc.gnu.org/ml/gcc/1999-08n/msg01022.html http://gcc.gnu.org/http://www.sunfreeware.com/原创 2011-06-28 15:52:00 · 488 阅读 · 0 评论 -
AIX 下载与安装 GCC
现在链接: ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gcc或者到 ibm的另一个下载网站:http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html根据自己的AIX版本和GCC版本选择相应的gcc包。 rp原创 2011-06-29 10:27:00 · 3012 阅读 · 0 评论 -
如何设置堆栈不可执行和ASLR
最近,做一个调查,如何在Windows和Linux系统下,做堆栈执行保护,和ASLR(Address Space Layout Randomization)。找了好多材料,才找到,在这里总结一下: OSExecution space protectionASLR (Address Space Layout Randomization)DescriptionChe原创 2011-11-28 11:08:06 · 5772 阅读 · 0 评论 -
Linux root用户与一般用户的区别
root用户可以在Linux系统上做任何操作,权限没有收到任何限制。一般需要root权限的任务包括:移动文件或者文件夹in或者out of 系统目录,复制文件到系统目录,赋予或者收回用户权限,系统维护和安装一些应用程序,例如:安装RPM格式的软件通常需要root权限,因为需要写一些信息到系统目录。还有一个需要注意的就是,对于小于1024端口的知名端口,只有root用户才可以有权限侦听,如果应用程序原创 2012-08-20 16:15:32 · 14352 阅读 · 0 评论 -
Linux系统下,如何将运行程序的用户从root转到一般用户?
在开发的过程中,一般的后台的服务程序,在开发初期没有规划好使用什么用户去运行,也没有考虑这个用户需要哪些权限,这就导致了一个很普通的现象发生,那就是,使用root,一切都可以搞定。大家都知道,使用root意味着这个程序所作的事情就没有限制啦,一旦,程序或者系统有缺陷而且被攻破,那么就可能导致攻击者可以控制整个系统,而且可以做任何事情。不过,大部分人还是不以为然,认为这样的事情不会落到自己头上,一直原创 2012-10-22 15:43:31 · 1633 阅读 · 1 评论 -
checking for C++ compiler default output... configure: error: C++ compiler cannot create executable
今天编译一个C++程序遇到问题如下:checking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for gawk... gawkchecking whether make sets ${MAKE}... ye原创 2013-02-26 13:41:52 · 2803 阅读 · 1 评论 -
运行Visual Studio code,遇到error while loading shared libraries: libXss.so.1: cannot open shared object
运行Visual Studio Code,遇到错误如下:[root@osboxes VSCode-linux-x64]# ./code ./code: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory 通过运行ldd命令...原创 2018-09-29 12:15:58 · 22408 阅读 · 1 评论 -
Windows系统VC项目的系统头文件路径
通过Visual Studio工具打开VC工程的属性,可以看到如下:通过红色部分可以看到头文件的包含路径是:$(VC_IncludePath);$(WindowsSDK_IncludePath); 这里是两个两个变量,还是不知道具体包含了哪些路径。这两个变量到底包含哪些路径呢?首先,需要查看一个 “Microsoft.Cpp.Common.props”的文件,此文件在Visual ...原创 2018-10-22 11:09:41 · 7906 阅读 · 0 评论 -
clang 中英文帮助手册
随着clang越来越流行,对于clang的使用和掌握,也变得越来越重要。 不过默认的手册都是英文的:https://clang.llvm.org/docs/UsersManual.html。 今天偶尔在一个网站看到一个中文版本的:https://www.bookstack.cn/read/clang-llvm/clang-user-manual.md, 看了一下,翻译的挺好。...原创 2018-10-25 14:24:36 · 1367 阅读 · 1 评论 -
Linux C/C++ 编译器cc\gcc\g++\c++区别
使用Linux系统的编译c或者c++的人,都知道Linux系统的编译器有cc\gcc\g++\c++,但是他们之间到底是什么关系呢?首先到系统的/usr/bin路径下,使用命令:ll | grep cc,可以看到如下:由此,可以知道LInux系统下,cc就是gcc。关于c++和g++也都在/usr/bin路径下,查看c++和g++的信息如下:两个文件的大小是一样的,再进一步...原创 2018-11-08 14:35:20 · 4946 阅读 · 0 评论 -
C、C++的几个编译错误和解决方案
今天编译一个下载的开源程序,遇到错误如下:1) error: ‘for’ loop initial declarations are only allowed in C99 mode解决方案:本机的gcc的版本是4.8.5的版本,升级一下gcc到最新版本,解决此问题。2) 接着又遇到另外一个错误:error: incompatible implicit declaration of b...原创 2018-11-14 16:30:33 · 1326 阅读 · 0 评论 -
Windows系统编译LLVM错误和解决方案
通过http://clang.llvm.org/get_started.html的前几步,把源代码下载下来之后,使用命令开始编译:cmake -G "Visual Studio 15 2017" -A x64 -Thost=x64 ..\llvm结果总是报错误:CMake Error: File /cygdrive/c/Tool/llvm/llvm/LLVMBuild.txt does...原创 2018-11-30 16:38:20 · 2413 阅读 · 0 评论 -
一个关于微软的_toupper的bug!
最近在使用 _toupper 这个函数时,发现了一个微软的一个非常低级的bug,带入如下:char toUpper = _toupper('t'); char upper = _toupper('T');结果确是: toUpper is T, upper is 4.看来, _toupper这个函数的实现可能比较笨,只要是传进来,就直接进行减0x20操作,不管你传的是否是小写。MSDN的帮助如下:int toupper( int c );int _toupper( int c )原创 2010-12-22 15:35:00 · 656 阅读 · 0 评论