Link Ubuntu 14.04,64 位上的 GNUstep
Link with GNUstep on Ubuntu 14.04, 64 bit
我正在尝试编译一个引用 GNUstep 类 的简单应用程序,在我的 Ubuntu 14.04、64 位机器上使用 GNUstep:
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
int main(int argc, char **argv)
{
NSString *bestType = [[NSPasteboard generalPasteboard]
availableTypeFromArray: nil];
NSLog(@"best type: %@", bestType);
return 0;
}
这是我的编译和 link 标志(其中一些可能有点矫枉过正):
CFLAGS=`gnustep-config --objc-flags` -std=gnu99
LDFLAGS=`gnustep-config --base-libs` -lgnustep-base -lobjc -lm -lglut -lGLU -lGL
编译前我运行脚本:
/usr/share/GNUstep/Makefiles/GNUstep.sh
这是 'make -n'
的输出
gcc main.m `gnustep-config --objc-flags` -std=gnu99 -L. `gnustep-config --base-libs` -lgnustep-base -lobjc -lm -lglut -lGLU -lGL -o tester
但是在linking的时候,Cocoa 类好像没有被拉进来,我得到一个undefined reference error:
/tmp/ccnyXBoH.o:(.data.rel+0x8): undefined reference to `__objc_class_name_NSPasteboard'
如果我在 main.m 中删除对 Cocoa 类 的所有引用,应用程序编译没有错误。
您找不到 NSPasteboard
的 class 定义的原因是因为它在 gnustep-config --gui-libs
选项中 - 即符号在 [=13 的 gui 库中=],不在GNUStep
的基础库中。解决方案是将 LDFLAGS
行更改为:
LDFLAGS=`gnustep-config --gui-libs` -lglut -lGLU -lGL
您不需要重复指定 -lgnustep-base -lobjc -lm
- 它们是 --base-libs
和 --gui-libs
的一部分。
我正在尝试编译一个引用 GNUstep 类 的简单应用程序,在我的 Ubuntu 14.04、64 位机器上使用 GNUstep:
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
int main(int argc, char **argv)
{
NSString *bestType = [[NSPasteboard generalPasteboard]
availableTypeFromArray: nil];
NSLog(@"best type: %@", bestType);
return 0;
}
这是我的编译和 link 标志(其中一些可能有点矫枉过正):
CFLAGS=`gnustep-config --objc-flags` -std=gnu99
LDFLAGS=`gnustep-config --base-libs` -lgnustep-base -lobjc -lm -lglut -lGLU -lGL
编译前我运行脚本:
/usr/share/GNUstep/Makefiles/GNUstep.sh
这是 'make -n'
的输出gcc main.m `gnustep-config --objc-flags` -std=gnu99 -L. `gnustep-config --base-libs` -lgnustep-base -lobjc -lm -lglut -lGLU -lGL -o tester
但是在linking的时候,Cocoa 类好像没有被拉进来,我得到一个undefined reference error:
/tmp/ccnyXBoH.o:(.data.rel+0x8): undefined reference to `__objc_class_name_NSPasteboard'
如果我在 main.m 中删除对 Cocoa 类 的所有引用,应用程序编译没有错误。
您找不到 NSPasteboard
的 class 定义的原因是因为它在 gnustep-config --gui-libs
选项中 - 即符号在 [=13 的 gui 库中=],不在GNUStep
的基础库中。解决方案是将 LDFLAGS
行更改为:
LDFLAGS=`gnustep-config --gui-libs` -lglut -lGLU -lGL
您不需要重复指定 -lgnustep-base -lobjc -lm
- 它们是 --base-libs
和 --gui-libs
的一部分。