自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 configure.ac范例二

变量在configure.ac,makefile.am,makefile,config.h中怎么传递。 比如你如何更具configure的参数让一部分源代码加入到编译,或者根据不同的cpu或者平台决定哪些代码需要编译哪些不编译。 AM_CONDITIONAL (conditional, condition) 首先开头不是AC而是AM它是一个automake宏。在configure.ac中使用,

2015-11-30 15:45:30 1318

原创 configure.ac范例一

检查头文件AC_CHECK_HEADERS([headers]) 例如:AC_CHECK_HEADERS([unistd.h windows.h])这个宏将在当前建造环境下检查unistd.h,windows.h是否存在。并将两个参数写入到配置头文件中。一般是config.h,你可以使用AC_CONFIG_HEADERS([headers])来指定。AC_CONFIG_HEADERS([confi

2015-11-30 14:27:05 7727

原创 autotool,libtool实践二

简单的例子: 我们使用strip.c、procpath.c创建动态库libstrip.dll 然后编译ah.c并连接libstrip.lib产生执行程序ah.exe Makefile.am如下:lib_LTLIBRARIES=libstrip.lalibstrip_la_SOURCES=strip.c procpath.clibstrip_la_LDFLAGS=-no-undefined

2015-11-27 11:26:27 680

原创 autotool编译实践

1.libtool 在windows下编译时不加-no-undefined将不产生动态库。 -avoid-version可以去掉库的版本。2.libtool脚本中max_cmd_len=8192可能会带来问题,当工程比较大文件列表很长超过8192时,在windows下将会出问题,我在编译libsodium时就出现过问题,简单的增加可以解决问题。3.config.sub脚本会检查host,看看是不是

2015-11-26 12:06:04 814

原创 autotool 交叉编译

等待建造。。。

2015-11-26 11:47:40 849

转载 使用 GNU Libtool 创建库

这篇文档向大家介绍 GNU Libtool 的用途及基本使用方法,同时描述如何结合 GNU Autoconf 和 Automake 来使用 Libtool。介绍在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的看法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样。对于开发人员,如果尝试将使用动态库的软件在这些系统之间移植,需要参考枯涩难懂的系统手册,以及修改

2015-11-25 11:02:04 406

转载 调试 configure

当程序不能编译时怎么办通常,在软件包的 README 文件中只能找到非常简单的“编译说明:运行 configure,然后运行 make”。但是,这样行不通时怎么办?在本文中,Peter Seebash 讲述了当自动的配置脚本失效时应该如何去做——以及作为开发者您应如何尽量避免这种错误。毕竟,如果您的程序无法编译,其结果将和您的程序编译后不能运行一样,您的用户会减少。现在许多开放源代码的程序都会附带有

2015-11-24 15:17:26 427

转载 调试 make

make 工具如 GNU make、System V make 和 Berkeley make 是用来组织应用程序编译过程的基本工具,但是每个 make 工具之间又有所不同。本文将介绍 makefile 的结构,避免如何在创建 makefile 时出现一些共同的错误,并探索如何修复或解决可移植性问题,还为解决突发的问题提供了一些技巧。大部分 UNIX® 和 Linux® 程序都是通过运行 make

2015-11-24 14:42:20 565

转载 使用 GNU Libtool 创建库

原文介绍在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的看法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样。对于开发人员,如果尝试将使用动态库的软件在这些系统之间移植,需要参考枯涩难懂的系统手册,以及修改相应的 Makefile,这一工作是乏味的,并且具有一定的难度。 使用 GNU Libtool 可以容易的在不同的系统中建立动态链接库。它通过一个称为

2015-11-24 10:06:25 401

转载 Shell脚本调试技术

一. 前言shell编程在unix/linux世界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之路。脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等。但与其它高级语言相比,shell解释器缺乏相应的调试机制和调

2015-11-23 21:08:31 1143

原创 怎么在程序内部确定程序自己的绝对路径(windows,linux)

在linux下可以这么实现char * get_process_path( ){ char arg1[20]; char exepath[1024 + 1] = {0}; sprintf( arg1, "/proc/%d/exe", getpid() ); readlink( arg1, exepath, 1024 ); return strdup(exepa

2015-11-19 10:55:49 384

原创 execl,execv说明

int execl(char * cmdfile,char *cmd,...);第一个参数是命令文件,第二个可以和第一参数相同也可以是命令的文件名,后面是字符串参数,最后一个一定要是NULL结束。 例如:execl("/usr/bin/hello","hello","arg1","arg2",NULL);int execv(char * cmdfile,char *arg[]);arg[0]是命令

2015-11-18 22:05:38 1021

原创 autotools例子1

建造中

2015-11-17 23:11:40 518 1

原创 编写Makefile.am

Makefile.am将指明工程需要哪些源文件,建造的是什么,如何安装它们。 具体语法如下: option_where_PRIMARY = targets … targets是要建造的目标 PRIMARY可以是下面的一个: 可能值 解释 PROGRAMS 目标是可执行程序 LIBRARIES 目标是静态库 LTLIBRARIES 目标是动态库 HEADERS

2015-11-17 22:57:55 3875

原创 编写configure.ac

configure.ac由一些宏组成 最基本的组成可以是下面的AC_INIT([PACKAGE], [VERSION], [BUG-REPORT-ADDRESS])# Checks for programs.# Checks for libraries.# Checks for header les.# Checks for typedefs, structures, and compi

2015-11-17 17:52:03 11655

原创 autotools 使用二

产生configure需要三个文件 configure.ac Makefile.am src/Makefile.am (参考我的另外两篇文章编写configure.ac和编写Makefile.am) 编辑好这几个文件就可以产生configure脚本,和config.h.in,Makefile.in,src/Makefile.in configure.ac主要初始化一些信息,检查编译器,检

2015-11-17 16:52:16 812

原创 Autotools使用一

autotools基础一般在linux上编译一个工程需要先调用./configure,大部分linux开源项目都使用autotools编译架构,都会有configure这个脚本。通过在执行./configure,产生Makefile,src/Makefile,config.h,为下一步编译做准备。随后调用make进行编译。一般步骤如下:./configuremakemake checksuP

2015-11-17 15:30:43 1453

原创 zeromq push-pull 模式

举一个例子,在并行处理中的一个经典情形。一个任务分发者拆解任务并进行分配,很多执行者领取任务然后执行,最后执行者将结果发送给一个收集者。见下图: - 最上面是产生任务的 分发者 ventilator - 中间是执行者 worker - 下面是收集结果的接收者 sink任务分发者首先给接受者sink发送“0”表示开始处理,然后给执行者发送一个休眠时间代表它的工作负载。// Task ven

2015-11-10 16:41:54 12106

原创 lua 字符串处理

在lua中字符串在内部会被复用。 例如你调用lua_pushstring函数,lua首先会为字符串计算一个hash值,然后会用这个值去查状态(lua_State)中的一个全局变量strt,strt是一个哈希数组。lua使用hash和strt将查找范围缩小,然后遍历具有相同hash值的字符串。如果找到相同的字符串就返回这个存在的。如果没有才会创建一个新的字符串,同时这个字符串放入到hash表strt

2015-11-03 17:20:26 2477

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除