编译
文章平均质量分 62
David_xtd
这个作者很懒,什么都没留下…
展开
-
Linux 从源码编译安装 OpenSSL
本文对比本机所用系统,对不一样的地方用黄色背景高亮显示OpenSSL 是一款开源的 SSL 软件包,采用 SSL 的公开密钥技术,用于实现传输层的通信加密功能。OpenSSL 支持 Linux、Windows、BSD、Mac 等平台,功能强大,包含丰富的密码算法库,SSL 协议库和应用程序。一、SSL 基本常识1.1、什么是 SSL?安全套接层(Secure Sockets转载 2011-12-09 16:15:04 · 8267 阅读 · 0 评论 -
编写包含多文件的Makefile以及Makefile的嵌套实验
(1)创建目录结构(2)输入"tree"命令,查看目录;若没有则安装tree命令 (sudo apt-get install tree )[html] view plaincopyprint?//f1.c #include "../include/myinclude.h"转载 2013-08-15 08:46:54 · 2035 阅读 · 0 评论 -
如何调试makefile
makefile 的调试有点像魔法。可惜,并不存在makefile 调试器之类的东西可用来查看特定规则是如何被求值的,或某个变量是如何被扩展的。相反,大部分的调试过程只是在执行输出的动作以及查看makefile。事实上,GNU make 提供了若干可以协助调试的内置函数以及命令行选项。用来调试makefile 的一个最好方法就是加入调试挂钩以及使用具保护的编程技术,让你能够在事情出错时恢复转载 2013-08-15 09:52:09 · 2778 阅读 · 0 评论 -
编译错误:error: default argument given for parameter 1 of ‘’ [-fpermissive]
问题:编译时出现错误提示如下:u1204@u1204-zhw:~/hwsvn/2sw/4prj_mips/UCP_rt5350/src/trunk$ makeg++ -g3 -Wall -o0 -c ini_file.cpp -o ini_file.oini_file.cpp:17:117: error: default argument given for parameter 1 o原创 2013-08-01 16:47:37 · 27081 阅读 · 2 评论 -
解决编译warning:warning: ‘MeteringUnit::voltage_gain_’ will be initialized after [-Wreorder]
问题:环境:ubuntu 12.04,g++版本4.6.3,编译目标文件时出现warnings:u1204@u1204-zhw:~/hwsvn/2sw/4prj_mips/UCP_rt5350/src/trunk$ make clean;makerm -f *.o local_ctrlg++ -g3 -Wall -o0 -c msgrcv_cmd.cpp -o msgrcv_cmd.o原创 2013-07-20 17:25:49 · 5737 阅读 · 0 评论 -
C和C++混合编译
关于extern_C通常,在C语言的头文件中经常可以看到类似下面这种形式的代码: #ifdef __cplusplusextern "C" {#endif/**** some declaration or so *****/ #ifdef __cplusplus}#endif /* end of __cplusplus */那么,这种写法什么用呢?实际转载 2012-04-11 09:59:35 · 16171 阅读 · 3 评论 -
error: ‘errno’ was not declared in this scope
问题:将一个c文件改为cpp文件,其中的perror()改用C++中的std::cerr 重新编译文件,出现错误:david@ubuntu:~/wrk/tmp/cpp_src/sysapps$ makeg++ -g3 -Wall -o0 -c message_recv.cpp -o message_recv.omessage_recv.cpp: In constructor ‘原创 2013-06-22 16:41:01 · 22701 阅读 · 0 评论 -
错误解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file
前提:ubuntu-debug机器上向SVN提交了pdu-IVT,想在别的普通机器上验证直接make能否成功,编译出的用户程序能否运行。工作PC机上装有VMware,里面的ubuntu版本跟ubuntu-debug机器上相同,都是ubuntu 11.10版本。VMware的家目录下有个目录pdu-IVT,是从SVN上更新出来之后,直接拷贝过来的。在将ubuntu-deb原创 2012-06-02 12:02:00 · 129206 阅读 · 1 评论 -
文件编译时出现multiple definition of `xxxxxx'的解决办法
问题:原来有单个文件tcpclient.c,运行gcc -o tcpclient tcpclient.c可以顺利完成编译,并能与下载到目标板中的tcpserver成功通讯;现在把tcpclient.c中的底层通讯部分抽取出来,单独放到一个文件中nettrans.c中,并有netrans.h作为头文件;然后,使用命令gcc -o tcpclient nettrans.c tcpc原创 2012-07-26 18:17:15 · 37058 阅读 · 1 评论 -
Makefile 自动变量
自动变量用于自动代替一条rule的目标和依赖列表:以下是Makefile中的7种自动变量及其说明:$@:表示规则的目标文件名。如果目标是一个文档文件(Linux中,一般称.a文件为文档文件,也称为静态库文件) ,那么它代表这个文档的文件名。在多目标模式规则中,它代表的是哪个触发规则被执行的目标文件名。$%:当规则的目标文件是一个静态库文件时,代表静态库的一个成员名。例如,规则的转载 2013-08-15 10:18:19 · 2916 阅读 · 0 评论 -
/usr/bin/ld: cannot find -lxxx 问题总结
linux下编译应用程序常常会出现如下错误:/usr/bin/ld: cannot find -lxxx意思是编译过程找不到对应库文件。其中,-lxxx表示链接库文件 libxxx.so。注:有时候,由于库文件是编译过程临时生成的,如果前面出错也会导致出现这种情况,下面针对的是由于本机系统环境缺失而引起的。。一般出现这种错误有以下几种原因:1.系转载 2013-09-02 14:06:06 · 3176 阅读 · 0 评论 -
Error: L6200E: Symbol xxx multiply defined (by adc_1.o and adc.o)的解决办法
问题:Keil MDK-ARM V5的工程,使用HAL库搭建的。HAL库从STM32Cube FW_F1 V1.6.1升级到STM32Cube FW_F1 V1.7.0,重新编译工程后提示有102条错误,而原来的工程是能正确运行的。解决办法:错误信息提示如下:linking...stm32_uart_mx\stm32_uart_mx.axf: Error: L6200E: S...原创 2018-11-28 16:22:26 · 46601 阅读 · 4 评论 -
vs2010下如何调试带输入参数的程序
当main函数的输入参数为空时,我们可以很方便的通过设置断点,单步运行的方法调试,可是如果需要调试的是有输入参数的程序该怎么办呢?最终还是让我找到了:英文版:Project -> Properties -> Configuration Properties -> Debugging在Command Arguments里填上即可。中文版:菜单[项目] -> 属性页 -> 配置转载 2014-08-05 11:02:50 · 2223 阅读 · 0 评论 -
VS2010中不能调试CMake生成的工程
问题:解决办法:原创 2014-08-05 10:56:02 · 7419 阅读 · 5 评论 -
How To Write CmakeLists.Txt
How To Write CmakeLists.TxtPosted on Sunday, October 14, 2012 by adminIf u have ever run into problems of porting a Visual C++ (Visual Studio) project/ solution from one location to othe转载 2014-07-01 10:40:51 · 2053 阅读 · 0 评论 -
error: passing xxx as 'this' argument of xxx discards qualifiers的解决办法
问题:解决办法:原创 2014-06-05 16:21:47 · 22117 阅读 · 0 评论 -
warning: unknown conversion type character 0x9 in format
问题:解决办法:原创 2014-05-17 16:06:49 · 13425 阅读 · 0 评论 -
使用#if defined()组成复杂的预编译控制指令
问题描述:想使用互斥的宏定义控制源代码中该编译哪一段代码,该如何使用预编译伪指令来控制呢?比如,对于通用型的源码来说,为了适应不同的设备配置,需要使用不同的配置文件,对于combo,使用cfg_file = "/usr/local/combo.ini";对于pdu,使用cfg_file = "/usr/local/pdu.ini";解决办法:1. 综合运用#if、#defi原创 2013-10-12 17:49:30 · 3385 阅读 · 0 评论 -
Linux下C++的通用Makefile与解析
本文给出万能Makefile的具体实现,以及对其中的关键点进行解析。所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改。号称万能Makefile,一统江湖。我对原版的Makefile做了些修改。首先揭开它的庐山真面目:##################################################### Generic makef转载 2013-09-23 17:14:35 · 3866 阅读 · 0 评论 -
make menuconfig提示'make menuconfig' requires the ncurses libraries.
问题:原来使用的ubuntu 11.10系统由于误操作,导致系统崩溃,重新安装了ubuntu 11.10;在编译内核的时候,提示如下错误:dingq@wd-u1110:~/hwsvn/2sw/1prj_linux/pdu/kernel/linux-2.6.30$ make menuconfig *** Unable to find the ncurses libraries or原创 2012-08-07 13:18:36 · 19296 阅读 · 7 评论 -
由编译错误看-L. -lxxxx的正确位置
问题:在研究一个问题时,碰到了新的问题。知道了-L. -lmyhello的正确放置位置。要研究的问题是:除了-static参数之外,使用静态库和使用动态库编译成目标程序使用的gcc命令完全一样,那当动态库和静态库同名时,gcc命令会优先使用哪个库?研究的范围在lib_test目录下有如下的文件:dingq@wd-u1110:~/wrk/tmp/lib_test$ lltota原创 2012-07-31 14:52:02 · 2128 阅读 · 0 评论 -
条件编译#ifdef MACRO_A和#if defined(MACRO_A)的区别
在查阅linux内核源码的过程中,发现存在两种不同类型的条件编译语句:#ifdef MACRO_A和#if defined(MACRO_A)或#if !defined(MACRO_A)#ifdef和#ifdefined()之间的区别实际上,两者并无本质的差别,但后者的应用范围更广,能支持多个预编译变量的检查。#if defined(MACRO_A) && !defined(原创 2012-06-16 19:12:13 · 5652 阅读 · 0 评论 -
内核编译配置选项含义
Linux 2.6.19.x 内核编译配置选项简介作者:金步国版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。转载 2012-05-25 11:08:37 · 6487 阅读 · 0 评论 -
Linux内核升级
Linux内核升级首先,确认当前linux系统的内核版本,使用命令:uname –a或 uname –r当前Linux系统版本是:linux-2.6.9-42第二步:下载新的内核源码,这里我们下载了linux-2.6.18,最新升级源码在网站上都免费下得到!第三步:将下载好的内核源码拷贝到目录下:第四步:把压缩包恢复解压:解压过程中:解压完成转载 2012-05-25 11:19:12 · 10675 阅读 · 3 评论 -
undefined reference to `__umoddi3'解决办法
主机配置:ubuntu 11.10下利用交叉编译工具arm-linux-gcc编译内核;目标板:AT91SAM9260内核版本:linux-2.6.24在编译内核linux-2.6.24的过程中遇到错误:kernel/built-in.o: In function `getnstimeofday':utsname_sysctl.c:(.text+0x23c64):原创 2012-05-22 16:56:42 · 9611 阅读 · 0 评论 -
WARNING: Unable to open an initial console
WARNING: Unable to open an initial console这个主要是没有建立控制台,解决方式:内核选择如下选项:Device Drivers ---> Character devices ---> [*] Virtual terminal Serial drivers ---> 8250/16550 and c转载 2012-05-29 18:51:12 · 8154 阅读 · 0 评论 -
Linux命令之sync - 强制将内存中的文件缓冲内容写到磁盘
用途说明Linux内核为了达到最佳的磁盘操作效率,会把需要写入到磁盘的数据现在内存中缓存起来,在合适的时候才真正写入到磁盘中,这在绝大多数情况都是没有任何问题的,而且提高了系统的效率,但是如果系统当机、掉电,就会有些文件内容不会保存下来。在Linux系统关机或者重启时,会自动把缓冲区的内容自动同步到磁盘中。我们也可以手工去执行sync命令,强制将内存中的文件缓冲内容写到磁盘,这个命令是通过调用转载 2012-05-29 19:01:08 · 4334 阅读 · 0 评论 -
EABI和OABI
相信很多学习嵌入式linux的人都碰到过这样一个问题:初学linux的时候大家都用的工具链版本多是3.4.5或3.4.2,名字为arm-linux-gcc或arm-softfloat-linux-gnu-gcc,可突然有一天发现这几个版本的编译器无法编译最新的内核了,并且发现人们都换了工具链了(arm-none-linux-gnueabi-gcc),怎么办,换呗。于是也都换成了这个工具链,转载 2012-05-29 09:53:10 · 1125 阅读 · 0 评论 -
内核配置中Default kernel command string和uboot中bootargs变量的区别
1. 如果uboot的bootargs设置了,kernel的Boot options中的Default kernel command string设置与否,都不启作用,即bootargs覆盖掉设置的Default kernel command string,打印的信息也是bootargs传过来的command string。 2. 如果uboot的bootargs未设置的话,ker转载 2012-05-28 11:19:37 · 3660 阅读 · 1 评论 -
Linux如何解决动态库的版本控制
(换句话说,soname不是真实存在的文件,只是在此库中和将来调用此库的文件中保存的一个名字,在加载时去找这个名字,使用时创建一个软连接来指向真实文件,这样真实文件的版本号就可以升级了) Linux 系统,也同样面临和Window一样的问题,如何控制动态库的多个版本问题。Window之前没有处理好,为此专门有个名词来形容这个问题 “Dll hell”,其严重影响软件的升级和维护。 Dll转载 2011-12-06 14:09:14 · 9406 阅读 · 2 评论 -
使用memset、memcpy等函数需要包含string.h而不是strings.h
问题:frm_package.c中调用了memset()和memcpy()函数,但是没有包含相应的头文件,编译时出现错误:dingq@wd-u1110:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket$ makegcc -g3 -Wall -o0 -c nettrans.c -o nettrans.ogcc -g3原创 2012-08-02 15:02:21 · 37268 阅读 · 0 评论 -
warning: implicit declaration of function ‘inet_ntop’解决办法
问题:在打印hostent的IP地址时,用到了inet_ntop(),在编译时显示这样的警告提示:dingq@wd-u1110:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket$ make clean;makerm -rf *.o tcpclient tcpservergcc -g3 -Wall -o0 -std原创 2012-09-05 16:04:38 · 15978 阅读 · 2 评论 -
snprintf()使用Warn提示:warning: format not a string literal and no format arguments
问题:使用snprintf()完成字符串的复制操作:#include #include #include #define ARR_SIZE(a) (sizeof((a))/sizeof((a)[0]))#define LEN_BUF 5int main(){ char buf[] = "0123456789"; char buf1[LEN_BUF]; cha原创 2013-03-29 13:59:05 · 18862 阅读 · 0 评论 -
编译错误error: stray ‘\343’ in program的解决
问题:从网上拷贝了一段代码,粘贴到自己写的程序strcat_compare.c中,然后编译gcc -o strcat_compare strcat_compare.c;出现错误如下:avid@ubuntu:~/wrk/tmp$ gcc -o strcat_compare strcat_compare.c strcat_compare.c: In function ‘main’:原创 2013-03-28 16:07:18 · 11587 阅读 · 0 评论 -
内核编译时提示错误error: sys/types.h: No such file or directory
问题:在虚拟机中编译老内核linux-2.6.24,通过sudo apt-get install linux-source-2.6.24后,得到linux-source-2.6.24.tar.bz2。解压到linux-source-2.6.24中,cd linux-source-2.6.24,执行sudo make oldconfig,出现错误提示:error: sys/types原创 2013-05-04 15:16:35 · 37402 阅读 · 0 评论 -
Ubuntu 12.04LTS g++编译错误解决
1.gcc版本过高,解决方法sudo apt-get install gcc-4.4sudo apt-get install g++-4.4装完后在/usr/bin目录下sudo mv gcc gcc.baksudo ln -s gcc-4.4 gccmv g++-4.4 g++g++ -v2.selected multilib '32' not install转载 2013-03-19 10:05:09 · 1623 阅读 · 0 评论 -
undefined reference to `SetPduPowerConsumptionCnt'的解决办法
问题:程序模型用C++语言编写,在程序模型和调用函数之间添加了一个接口文件modelc.cpp,用来让用c语言程序调用程序模型中的函数;新添加了两个函数setPduPowerConsumptionCnt()和setPduPowerConsumptionTot(),用来清除PDU模型中的总功耗和功耗计数器;编译时出现错误提示:dingq@wd-u1110:~/hwsvn/2sw/原创 2012-10-30 13:30:33 · 1075 阅读 · 0 评论 -
error: dereferencing pointer to incomplete type的解决办法
问题:编译程序时出现如下编译错误:dingq@u1110-120628:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket$ gcc -o tcpclient tcpclient.c tcpclient.c: In function ‘main’:tcpclient.c:59:46: error: derefere原创 2012-07-24 17:17:05 · 55656 阅读 · 7 评论 -
新内核2.6.30编译完之后在目标板上看不到ttyS1
问题:在老内核2.6.24.3的目标板上,/dev下能看到ttyS0,ttyS1和ttyS2;没有ttys*文件;但是,内核升级到2.6.30后,在/dev下只能看到ttyS0和ttyS2,有ttys0~ttysf共16个文件;并且,不能通过open命令打开ttyS1设备。解决办法:1. 进入到内核所在目录linux-2.6.30,运行命令:make menucon原创 2012-08-07 16:10:44 · 3169 阅读 · 0 评论 -
Keil编译错误error: #20: identifier "XXXX" is undefined
问题:在使用Keil编译工程时,经常遇到提示identifier "XXXX"未定义的error信息。Build target 'canopen_mx_v1d61'compiling main.c...../Src/main.c(104): warning: #223-D: function "setNodeId" declared implicitly setNodeId(...原创 2019-03-15 11:29:10 · 72278 阅读 · 1 评论