Ubuntu搭建LAMP环境(安装libpng)出现问题,没有makefile文件

继续安装php开发环境,当安装到libpng的时候,输入make命令,确发现提示错误,没有找到makefile。

我还纳闷儿了,明明有makefile.am 和 makefile.in啊,configure以后不就生成makefile了嘛,于是又执行了一遍configure,结果在最后一行发现错误,如下。

configure: error: zlib not installed

google以后,发现大家都是用的这个方法解决:

1.进入zlib的源文件目录,执行命令 make clean,清除zlib;
2.重新配置 ./configure,后面不要接–prefix参数;
3.编辑 make && make install 安装;
4.进入libpng目录,执行命令 ./configure –prefix=/usr/local/libpng;
5.编译 make && make install 安装;

————————————-华丽丽的分割线,下面是英语版———————–

English Version:

Continue to install the PHP environment.
When install the libpng package after entering the make command, the error “cannot find the makefile” might occur.
I’m so confused~~,  the makefile.am and makefile.in obviously exsit in the directory. The makefile should be generated after configuring.
So I perform the configure command again, and then find this error:

configure: error: zlib not installed

Google it, find following solution that many people are using:
1. Enter the directory where the zlib source file is, and perform the make clean command to clean up zlib.
2. Reconfigure using  ./configure without  –prefix parameter.
3. Perform make and make isntall
4. Enter the libpng directory, execute the command ./configure –prefix=/usr/local/libpng.
5. Perform command make and make install.

Ubuntu搭建LAMP环境(安装libxml)出现问题

由于项目需要,得在自己的机器上搭建一套PHP开发环境。在安装libxml2-2.6.30,用make的时候出现以下问题。如下图所示。
Selection_107

In function ‘open’,inlined from ‘xmlNanoHTTPSave__internal_alias’ at nanohttp.c:1588:12:

/usr/include/i386-linux-gnu/bits/fcntl2.h:51:24:

error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

解决办法:

打开libxml所在目录下的nanohttp.c,第1588行由
fd = open(filename, O_CREAT | O_WRONLY);更换为
fd = open(filename, O_CREAT | O_WRONLY,0777);
Selection_108

亲测,可行,重新make即可。

Linux改变文件目录字符集编码

最近遇到一个问题,就是把文件从windows通过SSH上传到linux服务器以后,在web页面浏览这些文件的时候,中文出现乱码。

到处搜搜,解决了,记录一下,方便以后要用的时候好找。大致是因为windows使用的GBK来编码中文字符,而linux用的是utf-8吧,所以只要转换一下格式就行了,于是搜了一下命令。

命令格式:convmv -f [原始编码] -t [目标编码] -r(目录循环)  –notest(实际改变,否则只是测试) [操作路径、文件]

如: convmv -f GBK -t UTF-8 -r –notest  upnp-related/  将  当前目录/upnp-related/下所有的目录和文件名由GBK改为UTF8格式。

如下图所示

然后再在web页面访问的时候就不是乱码啦

 

 

 

UPnP linux新手入门

上次发了一篇关于UPnP的入门教程,也不算教程吧,就是介绍了一下新手该从哪里下手,但基本是基于Windows的。但是发现里面的例子好复杂,常常一个sample中一个文件就几百上K行代码,着实累。后来经郭大神介绍,去找了linux下的一个例子,感觉舒服多了,还是C看正清晰明了啊。

——————————————————————割——————————————————————————

首先可以到google搜一下gupnp,会发现这个网站https://live.gnome.org/GUPnP/ 这里有很多关于GUPnP的文档可以下载,这个可以选择下或者不下,最主要的是先把GUPnP这个库的源码下下来。如下图所示。

 

点击here就跳转到下载页面了。你会看到一个下载列表,由于东西太多,所以在页面上搜索一下gupnp,结果如下图所示。

选择最后一个 gupnp/ ,进入到另一个下载列表里面,这里有gupnp的各个版本,一般就选最新的好来,我们选0.18版本。

然后下一个页面是选择次版本号,也选最新的吧,0.18.4,然后点击最后一个下载就行了。

 

下到本地以后,解压缩。然后从终端进入gupnp-0.18.4目录,里面有一个examples目录,那里面是一个upnp-light的小例子。但是并没有Makefile文件,但是有Makefile.am 和Makefile.in。退回到gupnp-0.18.4目录来,可以看到有一个configure的可执行程序,运行它,就可以用Makefile.in生成Makefile了,如下图所示。

 

再进到examples目录底下,就可以发现有light-server 和 light-cilent可执行文件了。

先运行light-server,再运行light-client就可以看到效果,再结合light-server.c和light-client.c源代码就基本能弄清楚UPnP的大致工作流程了。

 

现在老张交给的工作就只剩下怎么把UPnP集成到现有的智能家居里面去了,囧

Ubuntu 11.10(内核3.0.0.16-generic)升级内核到3.2.9无线网卡驱动问题

—————————————————————-——背景———————————————————————

前几天上《Linux内核分析及驱动编程》的时候,老师布置了一项作业——安装Linux发行版系统,下载Linux内核,编译、配置和安装内核,配置启动文件。

本身机器上已经安装了Ubuntu11.10(内核版本3.0.0.16-generic),好,拿着同学的一份实验报告过来,照着命令一路欢乐的敲,经过长时间的编译、配置、安装,然后更新grub,成功加载了新内核3.2.9。果断重启,结果发现不能无线上网了,点击网络连接那里,根本就没有搜索周围的无线网络。然后上网各种查,发现资料挺多,但是太杂乱,而且多是一篇抄一篇的,版本也基本是比较早期的,看来看去,自己也按照那些帖子、博客的方法解决来解决去,依然无果。

后来,同学推荐了一本书《火与冰》,当当上缺货,亚马逊也缺货,京东也没,上中关村书城的在线系统查,还是没有,淘宝倒有,去看了,影印的,比较喜欢看了以后收藏,遂放弃之。一问哪买,说是北大小西门的二手书那里有概率能淘到。然后在一个据大叔说是天儿不错的日子出门了。20几个地铁站后,到了本部,又不熟悉路,找饼出来带我去小西门,到了好像没发现有卖书的迹象,饼又带我去了国图和中关村图书大厦,在里面耗了两小时,想,不能就这么回去了吧,去买一本计算机的书看看得了。转悠转悠就看到了一本O‘REILLY出的书《LINUX内核技术手册》,翻了一下,好像正好是关于构建和定制内核的,想着有可能能解决前面打问题,心动,买之。总算有点儿收获了,反正也打算再去北大图书馆逛逛(之前在图书馆在线管理系统那里查到图书馆还有5本,其中有一本编号不是1,能够借出来),就再去了一趟小西门儿,问了一下保安卖二手书的事儿,答曰周六周日他们回出来。额,被坑了,,,直接杀向图书馆,遇到一咨询老爷子,被告知能借出的这本书在学院里面,没在图书馆里。Soga~~ 回北大荒去。

新书慢慢看,今天翻到网络驱动这块,抱着试一试的心情,一顿捣鼓,好之。现在我的Ubuntu已经能够无线上网了。打算把配置过程写下来,方便以后选了这门坑爹课又不幸遇到同样问题的小学弟小学妹们以及谁谁谁。

————————————————————————-—割—————————————————————

第一,找到你的无线网卡的驱动

首先,回到你安装的开发版Ubuntu(内核3.0.0.16-generic),因为你升级以后的内核不是没有驱动嘛,现在就回以前版本去找驱动。

 

这是我升级内核前的版本,如下图

 

 

 

或者也可以在系统监视器里查看内核版本等信息

 

 

 

然后,逆向的从网络连接名中找出控制它的PCI设备。要做到这一点,请查看各种网络连接名称,

在终端中输入:

$ ls /sys/class/net/

如图所示(我们默认以后命令都以截图方式给出,懒得复制出来了。。。)

 

 

 

lo目录代表的是网络回环设备,它没有连接到任何真正的网络设备。eth0、wlan0目录是你应该注意的,它们代表了真正的网络设备。

可以使用ifconfig工具,进一步查看并找出你所关心的网络设备

 

从这个列表的以下几行可以看出,wlan0是活动的并处于工作状态的网络设备:

 

该输出表明这是一个分配了有效IP(inet)地址的以太网设备。现在我们已经找到了wlan0这个设备,为了使它能在新内核中工作,我们需要找出控制此设备的驱动程序。在sysfs文件系统中跟踪链接是很简单的,用一条简单的命令就可以:

 

 

该输出表明模块iwlagn(如果你的模块名字不是这个,没有关系,下面遇到相关命令的时候对应替换就行)正在控制wlan0网络设备。Basename命令将完成以下步骤(可以不用管,这里只是给想了解的同学详细列一下)                                                                                                                                                                 

a. 跟踪符号链接 /sys/class/net/wlan0/device进入包含wlan0设备信息文件的/sys/device/目录下。请注意,在新版本内核中/sys/class/net/wlan0可能也是一个符号链接。

b.在sysfs目录下描述该设备的子目录中,有一个绑定到这个设备驱动的符号链接driver,因此我们跟踪这个链接。

c.在sysfs目录下描述该设备的子目录中,有一个到包含这个驱动的模块的符号链接module。我们要的就是这个符号链接的目标。可以通过readlink命令得到它,输出像这样

 

d.由于我们只关心模块的名称,要去掉readlink输出中的多余路径,只留下最右面的部分(模块名称)。这是basename命令所做的工作。直接传递路径给basename,它将输出:

 

所以,我们把readlink输出的一级级的符号链接所指的路径,传递给basename程序,使整个处理过程只用一行就能完成。

———————————————————————-———不用管结束———————————–—————————————

 

第二,找到驱动模块对应的配置选项

现在我们已经得到了模块名称,还需要找到控制它的内核配置选项。

进入到你的linux内核目录。应该是/usr/src/目录下的。

 

查看具体配置信息。

如果你的模块名字不是“iwlagn”,将其替换为你要找的模块名字即可。

接着在上面find命令的输出中找出那些含有CONFIG_的行。它们就是构建模块需要启用的配置选项。在上图中

CONFIG_IWLWIFI_DEBUGFS

CONFIG_IWLWIFI_DEVICE_TRACING

CONFIG_IWLWIFI_DEVICE_SVTOOL

就是你要找的配置选项,现在有了配置内核所需的信息。运行菜单配置工具:

 

然后按下/键(这会启动搜索)并键入要配置的选项,去掉CONFIG_ 部分字符串。如下图所示(以CONFIG_IWLWIFI_DEBUGFS为例,后面两个雷同)。

 

搜索之。

 

搜索结果,如下图所示。

 

该图显示出的就是你所寻找的。Location中的信息告诉你要把模块iwlagn构建到内核中,下面的配置选项必须启用:

第三,配置新内核

进入你下载的新内核解压后的目录,我的是在/home/david/ss.pku/linux-3.2.9目录下的

然后运行菜单配置工具进行配置,sudo make menuconfig,按照上面的路径,去把相应模块选中,即

方括号中选上*(“如上图的【*】”)

 

第四,重新编译、安装新内核

安装模块

安装内核

不用担心会重新编译全部的内核,make会查找哪些做出了更改。

小技巧:如果你的CPU是双核,或者4核,那么在make的时候,你可以采用sudomake install -j4或者sudo make install -j8命令,这样可以充分利用你的CPU资源(核的数目*2就行,默认是单核 -j2),可以大大降低内核编译安装的速度。

sudo make install -j8命令会把编译文件夹的“arch/x86/boot/bzImage”文件复制到“/boot”,同时还会复制 config 和 System.map 文件,最终在“/boot”会多出如下4个文件:
/boot/config-3.2.9
/boot/System.map-3.2.9
/boot/vmlinuz-3.2.9

/boot/initrd.img-3.2.9

输入命令update-grub,更新grub

重启,输入-uname-a,或者gnome-system-monitor可以看到加载了新内核,并且无线网卡已经驱动起来了,可以无线上网了。