Using Go to build a shared library to be called from C

LRN lrn1986@gmail.com
Tue Jun 14 09:54:00 GMT 2011


On 14.06.2011 1:24, Ian Lance Taylor wrote:
> LRN<lrn1986@gmail.com>  writes:
>
>> However, if i put anything more complex than "return 1" into Myfunc in
>> Go (such as using fmt.Printf() or returning a string - with
>> appropriate prototype changes to 'string' and 'char*' in Go and C,
>> naturally), it segfaults at runtime.
>>
>> Is that a limitation of gccgo, a bug, or am i simply doing something wrong?
> This is a current limitation of gccgo.  At present nothing initializes
> the packages imported by a packaged compiled into a shared library.
> This is fixable with a bit of thought but is not high on the priority
> list.
While i certainly in no position tell the others what is high-priority 
and what isn't, i feel that i should point out that the ability to 
combine shared libraries written in Go with non-go programs would allow 
any software to leverage Go's abilities (mostly - its easy-to-use 
concurrency model, even if its implementation in gccgo is not efficient 
at the moment) by re-implementing some parts in Go, while keeping 
everything else in C (or whatever is being used).

Anyway, if this situation is not going to change for some time, it might 
be a good thing to update the documentation to make it clear what works 
and what doesn't.

Ah, and another thing. Does that apply to static linking as well? I 
suddenly realized that if it does, then why the hell the documentation 
even mentions C->Go interoperability?



More information about the Gcc-help mailing list