Ber*_*own 5 windows winapi gcc cygwin objective-c
是否可以在cygwin下使用GCC正确构建目标c代码.
我有以下应用程序应该在Mac环境中工作,但无法获得最基本的东西来使用gcc.我需要更多的库吗?
#import "HelloWorldApp.h"
int main(int argc, char *argv[]) {
return 0;
} // End of the //
@interface Car
{
int test;
}
//The registration is a read-only field, set by copy
@property int (readonly, copy) test;
//the driver is a weak reference (no retain), and can be modified
//@property Person* (assign) driver;
@end
CC=gcc
CXX=gcc-g++
LD=$(CC)
CFLAGS=
LDFLAGS=-lobjc
all: HelloWorld
HelloWorld: HelloWorld.o
$(LD) $(LDFLAGS) -o $@ $^
%.o: %.m
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
clean:
rm -rvf *.o HelloWorld HelloWorld.exe
Run Code Online (Sandbox Code Playgroud)
错误:
gcc -c HelloWorld.m -o HelloWorld.o
In file included from HelloWorld.m:6:
HelloWorldApp.h:19: error: stray '@' in program
HelloWorldApp.h:19: error: parse error before "int"
make: *** [HelloWorld.o] Error 1
Run Code Online (Sandbox Code Playgroud)
Jes*_*ogt -1
您是否尝试过直接从命令行而不是通过 makefile 运行 gcc 命令?
找到了这个参考:
直接取自http://www.cs.indiana.edu/classes/c304/ObjCompile.html
编译 Objective-C
Objective-C 代码可以使用 GNU C 编译器 gcc 进行编译。Objective-C 接口文件通常以扩展名 .h 标记,如 List.h。实现文件通常用扩展名 .m 标记,如 List.m 中所示。实现文件应该#import其相应的接口文件。您的主程序还应该 #import 它使用的所有类的接口文件。通常,您需要编译单独实现类的文件。例如,要编译 List.m,请使用以下命令:
gcc -c -Wno-import List.m
Run Code Online (Sandbox Code Playgroud)
-c 开关告诉编译器生成一个目标文件 List.o,然后可以将其链接到您的程序中。对每个实现文件和主程序执行此操作。
-Wno-import 开关告诉编译器在代码中有 #import 语句时不要发出警告。由于某种原因,Richard Stallman(GNU 项目创始人)不喜欢 #import 结构。
当您准备好编译程序时,可以再次使用 gcc 链接类的所有实现。例如,要编译文件 List.o 和 main.o,您可以使用以下命令:
gcc -o prog -Wno-import List.o main.o -lobjc
Run Code Online (Sandbox Code Playgroud)
-o prog 告诉 gcc 创建一个名为 prog 的可执行程序(如果不指定它,它将默认为 a.out。
请注意,当将 Objective-C 与 gcc 链接时,您需要使用 -lobjc 开关指定 Objective-C 库。如果 gcc 报告错误,请联系您的系统管理员以确保在构建 gcc 时安装了 Objective-C 库和头文件 (objc/Object.h)。
归档时间: |
|
查看次数: |
6744 次 |
最近记录: |