2013-03-23 42 views
1

我正在編寫一個調用C代碼的Go包。我需要調用主機連接,但不幸的是加入-hostobj標誌給了我以下錯誤:前往 - LDFLAGS:-w -hostobj給出錯誤

gcc: error: unrecognized option ‘-h’ 

操作系統是Linux,AMD64架構。

這裏是所有的標誌:

// #cgo CFLAGS: -I. -fPIC 
// #cgo LDFLAGS: -lstdc++ -w -hostobj -L. libsomething.a 
// #include "something.h" 
// #include <stdlib.h> 

我在做什麼錯?

+0

這是什麼'-hostobj'標誌應該這樣做?我在gcc或ld手冊頁中找不到它。 (而'-w'看起來很奇怪。) – Mat 2013-03-23 21:56:22

+0

我不知道我是否明白,但是從我的理解來看,它告訴Go鏈接器使用主機的鏈接器。 http://code.google.com/p/go/issues/detail?id=4069 – 2013-03-23 22:06:01

回答

1

在Go源倉庫default分支的tip處,使用-linkmode而不是-hostobj。例如,-linkmode=external

Issue 4069: cmd/ld: invoke host linker for cgo build尚未標記爲固定。

+0

我正在使用來自hg(版本+ 1405be4b6fc4)的版本。添加到LDFLAGS給我'/ usr/bin/ld:找不到-linkmode = external'。如果我執行'install install -ldflags'-linkmode = external'編譯它,但我認爲它被忽略,因爲它不會用'-hostobj'抱怨。而且我仍然在想要避免鏈接錯誤。我如何驗證該標誌被使用? – 2013-03-24 12:20:41