GNUstep学习笔记

一、安装GNUstep for Windows

Windows installer

http://wwwmain.gnustep.org/experience/Windows.html

GNUstep MSYS

GNUstep Core

GNUstep Devel

三个安装包都需要下载,GNUstep MSYS和GNUstep Core相当于Objective-C的运行时,而GNUstep Devel相当于XCode中使用的Foundation和UIKit

GNUstep Devel依赖于GNUstep MSYS和GNUstep Core才可以运行。

 

二、测试GUI运行情况

上面的安装包默认不安装任何图形界面的程序。

只能通过开始菜单->GNUstep->Shell启动MSys命令行执行一些命令行指令。

基本操作和MinGW相同,唯一不同的是在

C:\GNUstep\GNUstep\System\Tools

有一些特有的程序,如openapp。

在官网上有个现成的示例代码包。

http://wwwmain.gnustep.org/resources/downloads.php?site=ftp%3A%2F%2Fftp.gnustep.org%2Fpub%2Fgnustep%2F

搜索GNUstep Development Tools下的Examples:

ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-examples-1.3.0.tar.gz

下载解压后,切换到指定目录下执行make即可编译,用openapp运行

 

 

$ tar xzf gnustep-examples-1.3.0.tar.gz
$ cd gnustep-examples-1.3.0
$ cd gui
$ cd Calculator
$ make
$ make print-gnustep-make-help
$ Calculator.app/Calculator.exe
$ openapp ./Calculator.app
  

三、使用gdb调试

HelloWorld命令行程序的编写、编译和调试方法参见:

http://www.nongnu.org/gstutorial/zh_TW/index.html

NSLog的输出需要gdb(直接执行程序是无法看到输出的),所以必须先了解gdb的使用方法(通常的做法是用.gdbinit编写调试脚本,所以必须搞清楚这个gdb支持哪些命令)。

 

1. 帮助:

http://sourceware.org/gdb/onlinedocs/gdb/

http://www.nongnu.org/gstutorial/

http://www.nongnu.org/gstutorial/en/index.html

http://www.nongnu.org/gstutorial/zh_TW/index.html

 

2. 相关问题

1) .gdbinit文件需要用echo创建。(或者用touch命令)

2) 用gdb -ex "help all" -ex "quit" > gdbhelp.txt查看gdb支持的指令(尽量写在.gdbinit文件中,在执行gdb时自动执行)。

3) GNUmakefile不能改名为Makefile,否则执行make后会出错。

4) 只有使用gdb时才可以看到NSLog的输出。

 

3. 参考代码和命令

 

.m文件(objc代码)

 

//prog1.m
#import <Foundation/Foundation.h>

int main(int argc, const char *argv[]) {
	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
	NSLog(@"Hello World!");
	[pool drain];
	return 0;
}

 

GNUmakefile文件(编译用)

 

# GNUmakefile
include $(GNUSTEP_MAKEFILES)/common.make

APP_NAME = HelloWorld
HelloWorld_HEADERS =
HelloWorld_OBJC_FILES = prog1.m
HelloWorld_RESOURCE_FILES =

include $(GNUSTEP_MAKEFILES)/application.make

 

.gdbinit(调试用,不是必需的,用于屏蔽调试输出,因为gdb默认读取.gdbinit中的指令

 

# .gdbinit
# http://sourceware.org/gdb/onlinedocs/gdb/

set debugevents off  
set debugexceptions off  
set print thread-events off

run
quit

 

执行命令:(openapp --debug等效于debugapp)

 

$ echo hello > .gdbinit
$ gdb -ex "help all" -ex "quit" > gdbhelp.txt
$ make
$ openapp --debug ./HelloWorld.app
$ debugapp ./HelloWorld.app
$ gdb --quiet ./HelloWorld.app/HelloWorld.exe

 

 

 

 

(TODO)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
簡單來說, GNUstep 是實作 OpenStep 介面的開放軟體 (Open Source) 計劃, 目標為提供跨平台的物件導向程式開發環境. 早在 1985 年, Steve Jobs 離開蘋果電腦 (Apple) 後成立了 NeXT 公司, 並於 1988 年推出了 NeXT 電腦, 使用 NeXTStep 為作業系統. 在當時, NeXTStep 是相當先進的系統. 以 Unix (BSD) 為基礎, 使用 PostScript 提供高品質的使用者圖形介面, 並以 Objective-C 語言提供完整的物件導向環境. 儘管 NeXT 在軟體上的優異, 其硬體銷售成績不佳, 不久之後, NeXT 便轉型為軟體公司. 1994 年, NeXT 與昇陽 (Sun Microsystem) 合作推出 OpenStep 介面, 目標為跨平台的物件導向程式開發環境. NeXT 接著推出實作 OpenStep 介面的 OPENSTEP 系統, 可在 Mach, Microsoft Windows NT, Sun Solaris 及 HP/UX 上執行. 1996 年, 蘋果電腦買下 NeXT, 做為蘋果電腦下一代作業系統的基礎, OPENSTEP 系統便演進成為 MacOS X 的 Cocoa 環境. 在 1995 年, 自由軟體基金會 (Free Software Fundation) 開始了 GNUstep 計劃, 目的在實作 OpenStep 介面, 以提供 Linux/BSD 系統一個完整的程式發展環境. 但由於 OpenStep 介面過於龐大, 開發人力不足, 及許多技術在當時尚未成熟 (如 Display PostScript), 所以直到目前為止, GNUstep 才算是一個完整的程式開發環境. 儘管 OpenStep 早在 1994 年便提出, 其介面及架構在現今仍相當先進及實用, 使得開發 GNUstep 程式相當容易. GNUstep 使用 Objective-C 語言, 是 C 語言加上 SmallTalk 的物件導向的功能. 結合兩者的優點, 又不至於像 C++ 如此複雜. GNUstep 提供兩個主要的程式庫, Foundation 及 AppKit. Foundation 處理非圖形介面的部份, 如字串, 檔案, 網路, 基本資料結構, 多行緒等, 又稱之為 GNUstep Base. AppKit 則處理圖形介面的部份, 包含視窗, 使用者介面等, 又稱之為 GNUstep GUI. 由於 GNUstep 具有跨平台的特性, 有關繪圖及字型的部份, 則交由 GNUstep Back 來處理. 使用者可依所使用的作業系統, 選擇適當的後端處理 (Backend). GNUstep GUI 會自行處理與 Back 相關的功能, 程式開發者只要使用 GUI 程式庫, 便可適用於各種後端上, 完全不用考慮平台問題. 目前 GNU GCC 3.x 支援 Objective-C 語言, GNUstep 則提供 GNUstep Make 來簡化編譯 Objective-C 程式. GNUstep Make 提供類似 Makefile 的功能, 稱為 GNUmakefile. 與 Makefile 相比較之下 GNUmakefile 簡單許多.
可以使用GNUstep在Windows XP上寫Objective-C程式,但是Objective-C已經加了很多新東西,而GNUstep裡的gcc並不提供,所以,这个是GNUstep,再加上新一代的編譯器架構Clang與LLVM(這也是Apple在新版Xcode裡預設使用的編譯器),這樣就能有Objective-C 2.0的功能,以及block與ARC(automatic reference counting)。 問:想開發iPhone或iPad或Mac的軟體,該怎麼辦? 答:使用Apple官方的軟體開發工具Xcode,只要到Apple公司的開發者網站,註冊一下(免費),即可下載最新版的XcodeXcode只能在Mac OS X(作業系統)上運行,所以要買一台Mac機器(硬體) 也就是說,如果你有一台Mac電腦(花錢買),下載Xcode(免費下載)後,就可以開始開發,在模擬器上執行看到成果。但是,如果想在iPhone實機上執行你寫的程式的話,那就要加入Apple的iOS Developer Program(要錢,一年要付$99) 問:想先學學Objective-C程式語言,還不想砸錢買Mac,有辦法在Windows上寫Objective-C程式嗎? 答:有,就是這篇的重點了。 节选自:http://yehnan.blogspot.com/2012/03/windowsobjective-cgnustepclangllvm.html 以上这个是中文网址,不过要越墙。 英文原文:https://solarianprogrammer.com/2012/03/21/clang-objective-c-windows/ 这个可以自用访问的。O(∩_∩)O哈哈~ 介于开源与自由精神,就不收费了,免费赠送,就当为这东西做推广了。也可在github上直接下载,只是担心不同地区对于国外网站的速度问题,选择上传csdn给大家提供方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值