DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tkzcol
今日帖子: 11
在线用户: 23
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ebizmis (ebizmis) ▲▲▲△△ -
普通会员
2017/8/13 19:20:42
标题:
熬夜整理的常用开源软件编译流程 浏览:1625
加入我的收藏
楼主: 为防止在15日(星期二)晚讲课演砸,昨天用虚拟机把Linux开发环境涉及的软件重新编译安装了一遍,熬个通宵直到凌晨4点结束。今天再把流程记录到微信公众号中,我想对初学者应该很有帮助。

想当年我开始琢磨Linux的时候,从一个小白到现在能在Linux上给客户开发应用,也是熬过无数个不眠之夜。没有办法,谁让我们程序员就是喜欢折腾呢!

一、替换CentOS内核
CentOS稳定性很好,但是有个大缺点,就是内核更新太慢了。现在最新的kernel已经到v4.12.6了,但是CentOS官方放出来的还是v3.10,对于一个爱折腾的程序员来说,简直是难以忍受!

要替换内核的第一步,就是把gcc先升级。
第一步:gcc的源码可以从http://gcc.gnu.org下载。下载后解压缩到home目录,解压命令:tar -xvf gcc-7.1.0.tar.bz2;

第二步:进入目录 gcc-7.1.0,执行contrib/download_prerequisites,下载必要的第三方支持源码。在国内下载的时候可能会有问题,反正就是不知道哪个可能就被墙了,东西都不大,要有翻墙能力建议翻墙后执行此命令;

第三步:执行配置生成Makefile,./configure --prefix=/usr --disable-multilib --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++ --enable-plugin --enable-initfini-array --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
这个配置可以自己琢磨增加或删除什么,./configure --help可以看所有选项;

第四步:执行编译,make。如果你的机器有好多个cpu,可以用make -j2表示用两个cpu同时执行编译,会加快速度;

第五步:安装,sudo make install。前面增加sudo就是标明需要管理员权限。会安装在--prefix指定的目录中。

从源码编译生成新的gcc是不是很简单?如果编译过程中遇到问题不要着急,先问度娘,最后祭出翻墙问谷哥。世界上有很多热心的程序员,总有人会解决你遇到的问题。但是我也建议大家方向一定要把握对,要走人多的地方,要不你落单了就有可能每人来救你哦!

gcc安装完成后,可以执行gcc -v检查下版本。

按此在新窗口浏览图片

OK,gcc已经是最新v7.1了!

接下来到http://www.kernel.org下载核心代码,这个网站可是Linux老师的窝,没事干的时候,我经常去逛逛,以拉近和大神之间的距离。现在最新稳定版是v4.12.6。
国内不好下载,我下了一个kernel4.12.7
按此在新窗口浏览图片
第一步:下载源码并解压到home目录;

第二步:拷贝.config到该源码目录里。.config在你第一次安装Linux的时候,由安装程序自动生成,记录你的硬件配置和软件选项等。可以在boot目录中找到。

按此在新窗口浏览图片

上面那个应该是最新的配置。拷贝到源码目录并改名称为.config。

第三步:make oldconfig。因为每个新版的核心会增加很多选项,这个命令就是把新的参数缺省值写到.config文件中;

第四步:如果大家还想手工配置参数,可以运行make menuconfig。我不喜欢IPv6,因此经常进去把IPv6 disable了;

第五步:make -j2

第六步:生成启动image并安装,sudo make modules_install install;

第七步:设置缺省启动项,sudo grub2-set-default "CentOS Linux (4.12.6) 7 (Core)";

第八步:reboot。

按此在新窗口浏览图片

成功更新内核!

二、编译fpc和lazarus
由于fpc只能用pascal编译,因此需要安装个初始的编译器。可以访问http://www.freepascal.org的下载专区。

第一步:下载v3.0.2 for Linux的二进制文件: fpc-3.0.2-1.x86_64.rpm;   

第二步:svn checkout http://svn.freepascal.org/svn/fpc/trunk ;fpc;

第三部:cd fpc

第四步:make all

第五步:sudo make install INSTALL_PREFIX=/usr

第六步:千万不要以为安装好就OK,缺省安装在/usr/lib/fpc/3.1.1,需要移到/usr/lib64/fpc/3.1.1下。因此请接着执行:
sudo mv /usr/lib/fpc/3.1.1 /usr/lib64/fpc/3.1.1
sudo ln -s /usr/bin/ppcx64 /usr/lib64/fpc/3.1.1/ppcx64

接下来就可以编译lazarus了,这个开发工具采用gtk-2做界面。
第一步:svn co https://svn.freepascal.org/svn/lazarus/trunk ;lazarus

第二步:make bigide

第三步:ln -s ~/lazarus/lazarus ~/桌面/lazarus

在Linux中经常用建立软链命令,不懂软链接是什么的可以问下度娘。
至此开发工具已经建立好,你可以试试开个一个简单的Hello world控制台程序,操作跟Delphi差不多,我就不多说了。

三、数据库postgresql
这个是我最喜爱的开源数据库,因此如果是给客户开发应用,我绝对首选这个,客户要是坚持用其他的数据库,那我就告诉他,对不起这个项目我就不接啦😂 ,顿时感觉自己很牛逼的感觉,能给客户做最后的通牒。

第一步:访问http://www.postgresql.org下载源码;

第二步:tar xvf postgresql-9.6.4.tar.bz2

第三步:cd postgresql-9.6.4

第四步:./configure --prefix=/usr/local/pgsql

第五步:make

第六步:sudo make install

数据库安装完成,但是还没有在后台运行。首先要创建数据库存放目录。
第一步:sudo mkdir /usr/local/pgdata

第二步:sudo chown postgres /usr/local/pgdata

第三步:/usr/local/pgsql/bin/initdb -D /usr/local/pgdata -E UTF8 --locale=zh_CN.UTF-8 -U admin -W

第四步:在contrib/start-scripts/linux有个启动脚本,拷贝到/etc/init.d,改名称pgsql,用vi打开看看有什么需要改动的地方。顺便说下,vi是必须要学会的工具,不会这个工具,都不好意思说自己搞开源的;

第五步:sudo chkconfig --add pgsql,设置开机启动。

启动如果有错,大家可以到pgdata下面有个serverlog,看下是什么错误再去解决。一般postgresql是运行在5432端口,大家觉得不爽可以改。

四、编译nginx和php
大家是不是觉得编译很简单?三步曲:configure, make, make install。
第一步:访问http://www.nginx.org下载最新源码;

第二步:解压源码;

第三部:./configure --prefix=/usr/local/nginx --with-pcre,如果需要https,需要加上参数 --with-http-ssl-module;

第四步:make

第五步:sudo make install

php编译稍微复杂点,因为要用到的模块可能会多点。有些人要图形的,还有人可能要访问数据库的。那么就要在configure加不同的参数。比如如果网站需要验证码,那gd库少不了。curl库可以用来获取其他网站的内容。建议这两个都装。

第一步:安装curl和gd,大家可以百度找下;

第二步:访问http://www.php.net下载源码;

第三步:./configure --prefix=/usr/local/php --with-openssl --with-pdo-pgsql=/usr/local/pgsql --with-pgsql=/usr/local/pgsql --with-webp-dir=/usr/lib64 --with-config-file-path=/usr/local/php --enable-fpm --with-fpm-user=51pas --with-xpm-dir=/usr/lib64 --enable-mbstring --enable-opcache=no

第四步:make

第五步:sudo make install

nginx是通过php-fpm来和php协同工作的,因此需要配置 /usr/local/nginx/conf/nginx.conf。在server block中配置如下信息:
        location ~ \.php$ {
          root          html;
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php;
          fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include        fastcgi_params;

这样遇到.php的网页请求,就会自动转发到后台由php-fpm进行处理。

针对nginx和php-fpm的开机自启动也需要在/etc/init.d中增加脚本。缺省php-fpm listen端口为9000。

五、安装firebird
说到firebird,也是满眼的泪水。在utf-8格式下的汉字按中文拼音排序,折腾了很久。编译firebird好麻烦,要很纯洁的系统,因此我就用已经准备好的二进制安装。直接下载http://www.51pas.com/firebird3.tar.bz2解压到/usr/local下。

完成后需要在/etc/profile.d下增加个脚本,让搜索到相关库。
export LD_LIBRARY_PATH=/usr/lib64:/usr/local/firebird/lib

编译好以上的环境是拥抱开源的第一步,希望能够帮助到大家。

下周二(8月15日)在微信群中解答大家遇到的问题,想进群的朋友可以扫下面二维码,若人数超了可以联系微信号christopherli拉你进群:

按此在新窗口浏览图片
----------------------------------------------
欢迎加入PAS社区www.51pas.com,从开源获得力量!
作者:
男 snakegao (snakegao) ★☆☆☆☆ -
盒子活跃会员
2017/8/13 20:16:23
1楼: 有心啦,楼主,加油!!!
----------------------------------------------
-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2017/8/13 20:27:23
2楼: 二、编译fpc和lazarus


也就是说,经过这些步骤的编译,可以得到一份自己的FPC和LAZARUS了?这么容易?
----------------------------------------------
只有偏执狂才能生存!
作者:
男 ebizmis (ebizmis) ▲▲▲△△ -
普通会员
2017/8/13 21:15:08
3楼: 是的,现在的开源就是这么玩的。但是需要看清授权,是不是能商用?改完的源码是否需要公开等条款。
----------------------------------------------
欢迎加入PAS社区www.51pas.com,从开源获得力量!
作者:
男 hbug (hbug) ★☆☆☆☆ -
普通会员
2017/8/13 23:05:02
4楼: 这个顶下,虽然目前用不上。
----------------------------------------------
专业提供人力资源软件、指纹考勤软件、POS进销存软件、酒店餐饮软件
http://www.winsoftcn.com
作者:
男 wg961423 (麦子仲肥) ★☆☆☆☆ -
盒子活跃会员
2017/8/14 16:01:16
5楼: 这个顶下,虽然目前用不上。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS