在Mac OS X上安装使用lazarus 1.6.4
一直觉得delphi的OO做得比C++还完善, 但如今日落西真是让人感到唏嘘, 这并不意味着delphi比C++差, 它的创始人被微软挖墙脚后创造了C#系列开发工具, 设计理念大部分与Delphi相似,但dotnet平台的执行效率非常不好.
如果在其他平台上也能用delphi开发呢?而且不用钱(Delphi正版极其昂贵)! 你会选择吗? 在OS X上开发应用除了用XCode, 还可以用lazarus, 一个跨平台的免费delphi !
由于国内没有相关的教程乃至官网wiki所详述的解决方法不通用(OS X版本不一样就有差别), 于是花了一天半的时间自己尝试安装并整理了这篇教程.
先描述一下版本:
OS: OS X EI Capitan (10.11.6)
XCode: 8
本文的大纲:
1/安装gdb, 并为其签名
2/安装command-line
3/安装lazarus
不知道10.X开始已经剔除了gdb改用lldb为默认的调试器, 所以需要手动安装,以下为转载内容:
在10.10下亲试的安装gdb和签名gdb以让它正常使用的步骤供参考。
我的步骤是:
1. 使用Homebrew安装gdb
2. 使用系统自带的codesign签名gdb
3. 验证gdb使用
使用Homebrew安装gdb
首先安装Homebrew,参考网址http://brew.sh/
操作步骤是在Terminal中执行
ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”Homebrew安装完成后,在Terminal中执行 brew install gdb 安装gdb,安装后目录可以通过which gdb查看:/usr/local/bin/gdb
使用系统自带的codesign签名gdb
在10.10下,gdb不签名的话是无法访问其他程序的,此时如果gdb 你的程序时,会报如下错误:
*Unable to find Mach task port for process-id 83686: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))*
此时需要对gdb进行签名。首先:制作一个签名:
打开签名软件:Applications/Utilities/Keychain Access.app 在菜单栏选择:
Keychain Access > Certificate Assistant > Create Certificate…开始制作:
然后一路点继续 在下面的页面选择system
完成页面如
记得一步:让证书always trust,右键生成的证书gdb-cert,然后get info
ok,证书生成了。
然后:开始签名:
先把keychain工具关闭退出(需要这一步),重启 OS X签名的命令为(如果是替换已签好的签名,则将-s 替换成 -fs)
codesign -s gdb-cert /usr/local/bin/gdb
好了,签名成功,开始gdb了。
- 验证gdb使用
在生成aaa的程序的makefile中加入-g编译源文件,生成aaa
在生成的程序目录下执行:gdb ./aaa,然后就可以使用b p bt等gdb指令了
-----------------------------
安装 command-line:
打开terminal窗口,输入xcode-select --install, 完毕后打开xcode看看参数里面的locations, command-line是否有内容.
安装lazarus:
先下载lazarus & fpc到Downloads文件夹, https://sourceforge.net/projects/lazarus/files/Lazarus%20Mac%20OS%20X%20i386/Lazarus%201.6.4/
按指引先安装fpc, 再安装fpcsrc, 再安装lazarus, 这个版本的lazarus dmg映像文件好像是坏的,至少我的os x 10.11不识别, 怎么办??到官网论坛上问, 没人回答 (好冷的样子), 于是自己动手重新做了一个pkg文件(其实也就是zip文件):
1/ 用ultraiso将这个lazarus的dmg映像文件爆出来, 然后放在新建的lazarus.zip里面(注意目录结构) ,完毕后将其改名为lazarus.pkg, 用7zip打开是这样的
然后将其放于Download文件夹, 点击运行,一切正常!!
配置gdb
在当前用户的home目录下建立.gdbinit文件, 里面加入
set startup-with-shell off
lazarus第一次运行, 新建立一个空的project1, 编译, 然后在terminal里面测试一下gdb:
gdb project1
在里面输入break main
再输入run
如果没有gdb未签名相关的错误, 那证明gdb能正常使用了, 输入quit退出 .
--------------
但这时候lazarus还是不能正常调试的, gdb还是会不断有错误 (真是日了狗了), 需要 配置lazarus:
menu ->tools->options->debugger->Reset debugger after each run 上打上勾, 然后断点调试,逐步跟踪都能正常!
最后来一张完美的运行图:
<<<全文完>>>
在Mac OS X上安装使用lazarus 1.6.4的更多相关文章
- Mac OS X 上安装 ASP.NET 5
在Mac OS X Yosemite 10.10.3 中搭建第一个 ASP.NET 5 Web 项目 终于有时间在 Mac 上安装一下 ASP.NET 5,网上有许多教程,但是多数的时间比较早了,版本 ...
- 在 Mac OS X 上安装 TensorFlow
在 Mac OS X 上安装 TensorFlow 这个文档说明了如何在 Mac OS X 上安装 TensorFlow. 注意:从 1.2 版本开始,在 Mac OS X 上 TensorFlow ...
- 在 Mac OS X 上安装 Docker(转)
http://www.oschina.net/translate/installing-docker-on-mac-os-x?print 在 Mac OS X 上安装 Docker 注意:Docker ...
- 如何在Mac OS X上安装 Ruby运行环境
对于新入门的开发者,如何安装 Ruby和Ruby Gems 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境.此安装方法同样适用于产品环境! 系统需求 首先确定操 ...
- Mac OS X上安装 Ruby运行环境
环境 对于新入门的开发者,如何安装 Ruby和Ruby Gems 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境.此安装方法同样适用于产品环境! 系统需求 ...
- 在Mac OS X上安装ASP.NET 5(译文)
ASP.NET 5 运行在包括OS X的可用于多个平台的.NET Execution Environment(DNX)上.本文介绍如何在OS X上通过HomeBrew安装DNX和ASP.NET 5. ...
- Mac OS X上安装配置apache服务器
说明:Mac在安装完成Mac系统的时候它已经自带了apache服务器,接下来就是配置和将它启动运行了.那么接下来要做的事情就是: 1.配置apache的配置文件 2.设置虚拟主机 启动并查看apach ...
- 在Mac OS X上安装Ionic
安装xcode(从app store下载,用于编译调试ios平台app) 安装node.js(npm) 安装ionic(sudo npm install -g ionic) 安装cordova(sud ...
- Sqlite在Windows、Linux 和 Mac OS X 上的安装过程
一:在 Windows 上安装 SQLite 1,下载 请访问SQLite下载页面http://www.sqlite.org/download.html,从Windows 区下载预编译的二进制文件.需 ...
随机推荐
- BZOJ 2865 字符串识别(后缀数组+线段树)
很容易想到只考虑后缀长度必须为\(max(height[rk[i]],height[rk[i]+1])+1\)(即\([i,i+x-1]\)代表的串只出现过一次)然后我正着做一遍反着做一遍,再取一个\ ...
- 第五周-磁盘分区GPT、shell脚本练习、lvm详解
1. 描述GPT是什么,应该怎么使用 Linux中磁盘分区分为MBR和GPT. MBR全称为Master Boot Record,为主引导记录,是传统的分区机制,应用于绝大多数使用的BIOS的PC设备 ...
- python学习笔记:第六天
一.元组(通用格式a=(1,),结束后面加个逗号,不同与数组是中括号,只能是只读的,不能修改,是有序的): 列表之间可以嵌套(列表之间嵌套,嵌套元组,是有序的):a[b[1,2],c[3,4]],输出 ...
- WPF 封装 dotnet remoting 调用其他进程
原文:WPF 封装 dotnet remoting 调用其他进程 本文告诉大家一个封装好的库,使用这个库可以快速搭建多进程相互使用. 目录 创建端口 调用软件 运行的类 运行C++程序 通道 使用 在 ...
- 低价购买 洛谷1108 codevs4748 dp
首先,,我相信第一问是可以做出来的,,,做不出来自行面壁思过,,, 第二问,我们可以发现,如果f[i]为1时应该将其g[i]初始化为1,当初就是因为这个wa了一个世纪,之后先考虑不需要判重时的情况,如 ...
- 逆向project第003篇:跨越CM4验证机制的鸿沟(上)
一.前言 <冠军足球经理>系列作为一款拟真度极高的足球经营类游戏.赢得过无数赞誉,而CM4可以说是这个传奇的起点. 可是在游戏安装过程中.当用户输入完序列号之后.程序并不会对用户的输入进行 ...
- JAVA学习(五):Java面向对象编程基础
Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...
- Java实现斐波那契数列Fibonacci
import java.util.Scanner; public class Fibonacci { public static void main(String[] args) { // TODO ...
- jsp出现错误can not find the tag directory /web-inf/tags
百度google了一大圈没找到中文答案,无奈之下硬着头皮看了一个英文答案http://stackoverflow.com/questions/11502703/eclipse-can-not-find ...
- SQL Server单表已700w+将普通表转换成分区表1
最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤. 一.创建文件组 ...