首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Xcode LLVM编译器编译和使用Haskell作为C库?

如何使用Xcode LLVM编译器编译和使用Haskell作为C库?
EN

Stack Overflow用户
提问于 2011-04-19 05:33:18
回答 1查看 668关注 0票数 2

我想设置一个项目,以获取我的.hs代码和主.c程序,并通过使用LLVM编译器生成一个静态链接的可执行文件。我可以通过ghc命令行选项来构建.hs、生成存根,并完全使用ghc编译和链接驱动程序应用程序。但是,我在Xcode中遇到了各种问题。

我的第一个问题是,我当然需要在Xcode中使用32位编译环境。这个问题解决了,我不得不摆弄路径来显式地包含HsFFI.h。这个问题解决了,我得到了一个链接器错误:

代码语言:javascript
复制
Ld "build/Debug/FFI Test.app/Contents/MacOS/FFI Test" normal i386
    cd "/Users/rcl/TestXCodeProjects/FFI Test"
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    /Developer/usr/bin/clang -arch i386
        -isysroot /Developer/SDKs/MacOSX10.6.sdk
        "-L/Users/rcl/TestXCodeProjects/FFI Test/build/Debug"
        "-L/Users/rcl/TestXCodeProjects/FFI Test/FFI Test"
        "-F/Users/rcl/TestXCodeProjects/FFI Test/build/Debug"
        -filelist "/Users/rcl/TestXCodeProjects/FFI Test/build/FFI Test.build/
            Debug/FFI Test.build/Objects-normal/i386/FFI Test.LinkFileList"
        -mmacosx-version-min=10.6 -framework Cocoa
        "/Users/rcl/TestXCodeProjects/FFI Test/FFI Test/ForeignExportCost.a"
        -o "/Users/rcl/TestXCodeProjects/FFI Test/build/Debug/FFI Test.app/
            Contents/MacOS/FFI Test"

Undefined symbols for architecture i386:
  "_hs_init", referenced from:
      -[FFI_TestAppDelegate applicationDidFinishLaunching:] in FFI_TestAppDelegate.o
  "_simpleFunction", referenced from:
      -[FFI_TestAppDelegate applicationDidFinishLaunching:] in FFI_TestAppDelegate.o
  "_hs_exit", referenced from:
      -[FFI_TestAppDelegate applicationDidFinishLaunching:] in FFI_TestAppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

"simpleFunction“在我使用ghc编译的"ForeignExportCost.a”库中,如下所示:

代码语言:javascript
复制
ghc -no-hs-main -fPIC -c ForeignExportCost.hs
ghc -no-hs-main -shared ForeignExportCost.o -o ForeignExportCost.a

我遗漏了什么或做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-19 06:09:11

看起来我的问题的答案是detailed here,它告诉我如何痛苦地在我的项目中添加大量的.a。this blog post给出了一些有用的技巧来帮助你上路。

尽管如果有人告诉我“嘿,等等,有一种比迭代地找出失败的副手更容易的方法”,那将是很棒的。因为我想要多次重用这个框架,这是一种真正痛苦的启动和运行方式!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5709183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档