2 Import and Export

When gccgo compiles a package which exports anything, the export information will be stored directly in the object file. When a package is imported, gccgo must be able to find the file.

When Go code imports the package gopackage, gccgo will look for the import data using the following filenames, using the first one that it finds.

gopackage.gox
libgopackage.so
libgopackage.a
gopackage.o

The compiler will search for these files in the directories named by any -I options, in order in which the directories appear on the command line. The compiler will then search several standard system directories. Finally the compiler will search the current directory (to search the current directory earlier, use ‘-I.’).

The compiler will extract the export information directly from the compiled object file. The file gopackage.gox will typically contain nothing but export data. This can be generated from gopackage.o via

objcopy -j .go_export gopackage.o gopackage.gox

For example, it may be desirable to extract the export information from several different packages into their independent gopackage.gox files, and then to combine the different package object files together into a single shared library or archive.

At link time you must explicitly tell gccgo which files to link together into the executable, as is usual with gcc. This is different from the behavior of other Go compilers.