我正在尝试使用Buck交叉编译链接到此共享库的Windows共享库和二进制文件。我在.buckconfig
中设置了工具链路径:
[mingw]
prefix = /usr/local/bin/i686-w64-mingw32
[cxx]
cc = $(config mingw.prefix)-gcc
cpp = $(config mingw.prefix)-cpp
ld = $(config mingw.prefix)-ld
ar = $(config mingw.prefix)-ar
这是BUCK
档案:
cxx_library(
name = 'bar',
srcs = ['bar.c'],
headers = ['bar.h'],
exported_headers = ['bar.h']
)
cxx_binary(
name = 'foo',
srcs = ['foo.c'],
link_style = 'SHARED'
)
foo.c
:
#include <stdio.h>
#include "bar.h"
int main(int argc, char *argv[]) {
bar_init();
return 0;
}
bar.c
:
#include <stdio.h>
#include "bar.h"
void bar_init() {
printf("bar_init successful\n");
}
bar.h
:
void bar_init();
当我buck build //:foo
时,我得到/usr/local/bin/i686-w64-mingw32-ld: unrecognised emulation mode: ap
错误(由于-map
选项传递给链接器,Mac Os链接器有它,但GNU链接器没有,它有{{{ 1}})。
当我添加
-Map
到archiver_platform = WINDOWS
linker_platform = WINDOWS
,我得到.buckconfig
java.lang.UnsupportedOperationException
。要么不支持,要么at com.facebook.buck.cxx.WindowsLinker.origin(WindowsLinker.java:88)
表示msvc工具。
是否可以使用Buck构建Windows二进制文件和WINDOWS
?怎么做? (我不想在Windows上运行Buck,使用mingw或mingw-w64进行交叉编译是可以的。)
更新:我能够通过以下方式使其发挥作用: