- 博客(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
转载 使用 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
原创 编写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关注的人