Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;意外的R_X86_64_64动态符号重新定位“;使用Cgo时_Go - Fatal编程技术网

&引用;意外的R_X86_64_64动态符号重新定位“;使用Cgo时

&引用;意外的R_X86_64_64动态符号重新定位“;使用Cgo时,go,Go,我正在尝试使用Cgo为C库创建绑定。我有一个使用Cgo导入库并调用它的包。它编译和安装都很好。但是,当尝试从Go程序使用该包时,我在链接时遇到错误“意外的R_X86_64_64动态符号重定位” 有什么想法吗?它出现在6g编译器的例程中: case 256 + R_X86_64_64: if(targ->dynimpname != nil && !targ->dynexport) diag("unexpected R_X8

我正在尝试使用Cgo为C库创建绑定。我有一个使用Cgo导入库并调用它的包。它编译和安装都很好。但是,当尝试从Go程序使用该包时,我在链接时遇到错误“意外的R_X86_64_64动态符号重定位”

有什么想法吗?

它出现在
6g
编译器的例程中:

case 256 + R_X86_64_64:
        if(targ->dynimpname != nil && !targ->dynexport)
                diag("unexpected R_X86_64_64 relocation for dynamic symbol %s",
                     targ->name);
        r->type = D_ADDR;
        return;
R_X86_64_64
是库中的一种符号类型。有关amd64体系结构中重新定位的更多信息,请参阅第70页

您是否可以将
386
编译库与
amd64
代码混合使用

编译器应报告导致问题的确切符号。您是否可以尝试链接包含其他符号的最小库,并尝试查找失败的最小示例


您是否设法将
cgo
与任何库一起使用?

我同意Elazar的观点,32位和64位代码的混合似乎是合理的

你试过gccgo吗?

就像一个符咒:

root@Ubuntu-1304-raring-64-minimal:/etc# uname -a
Linux Ubuntu-1304-raring-64-minimal 3.8.13.4 #2 SMP Mon Jul 8 23:59:05 CEST 2013 x86_64 x86_64 x86_64 GNU/Linux
按以下顺序执行操作:

cd /usr/local
mkdir /var/go
apt-get install mercurial
hg clone https://code.google.com/p/go/
之后,创建一个包含以下内容的/etc/profile.d/go.sh并使其可执行:

export GOPATH=/var/go
export GOROOT=/usr/local/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
export GOROOT_FINAL=/var/go
export GOHOSTARCH=amd64
export GOARCH=amd64
export CGO_ENABLED=1
然后重新启动shell。没有源xxx将正常工作-警告!在新shell中,执行以下操作:

cd /usr/local/go/src
./make.bash
这样做,然后从/usr/local/go-to/var/go复制所有内容-或者有一种方法可以通过符号链接合并这两个目录,无论您喜欢什么。在上面的go.sh脚本中注释GOROOT_FINAL之后,再次重新启动shell。你可以使用最新的工作语言

root@Ubuntu-1304-raring-64-minimal:/usr/work/golang/go/src# go version
go version devel +35d5bae6aac8 Fri Oct 18 10:45:19 2013 +0400 linux/amd64

注:需要两次shell重启—我自己很难找到。

您找到解决方案了吗?我在我的一个库中遇到了完全相同的错误。我在最新的Go版本中遇到了完全相同的问题。我在amd64上运行linux,这个库是我自己的,我刚刚编译并使用了其他语言。我可以毫无问题地将cgo与其他库一起使用。另外,我也遇到了错误,如<代码> Sym 512:在1节(0)中忽略了ZN8EXMPL4DoISBIWST11CHARITSITIWESWEEDEDE5EV。