「android」gomobile argument unused during compilation: '-stdlib=libc++'

时间:2022-05-07 06:55:50

【问题】

android基于go的NDK开发中配置gomobile参考官方WIKI:https://github.com/golang/go/wiki/Mobile,大致步骤:

1、下载gomobile:$ go get golang.org/x/mobile/cmd/gomobile

2、初始化 $ gomobile init
但是使用gomobile编译官方例子($ gomobile build -target=android golang.org/x/mobile/example/basic)

时提示错误:argument unused during compilation: '-stdlib=libc++'

版本:go 1.11,mac os10.13.1

【解决】

网上居然没搜到该问题,难道就我遇到了这个问题? 开始以为是clang,gcc引起的,更新了go版本,无效。

从字面上理解这个错误,是编译时带了-stdlib=libc++,但是却没有用到该参数???

libc++是针对clang编译器特别重写的C++标准库,libstdc++是gcc的,单独编译用gcc和clang编译cpp文件,无论是否带-stdlib=libc++,均正常。

在官方的github上不小心搜到了一样的问题,我去!花了这么多时间。

修改android的ndk中的build/tools/make_standalone_toolchain.py,去掉-stdlib=libc++,两个地方:

1、flags = '-target {} -stdlib=libc++'.format(target)改为flags = '-target {}'.format(target)

2、cxx_flags = flags + ' -stdlib=libc++'改为cxx_flags = flags

修改之后重新 $ gomobile init