我正在尝试使用x64机器和this工具链交叉编译ARM(raspberry pi 2)的应用程序(tvheadend)。
我使用以下命令行来配置编译:
./configure --arch=arm-linux-gnueabihf --cc=arm-linux-gnueabihf-gcc --disable-avahi --release --cflags=-DOPENSSL_USE_DEPRECATED
然后我只是make
。
在编译源文件src/utils.c
期间会出现问题:此类文件包含string.h
,该文件已从工具链包含目录(例如ARMTOOLCHAIN/usr/include
)中正确选择,但随后{位于string2.h
内的{1}}是从系统目录中选择的,而不是ARMTOOLCHAIN/usr/include/arm-linux-gnueabihf/bits
。
ARMTOOLCHAIN/usr/include/arm-linux-gnueabihf/bits
问题是编译器不在In file included from /usr/include/x86_64-linux-gnu/bits/byteswap.h:35:0,
from ARMTOOLCHAIN/usr/include/endian.h:61,
from /usr/include/x86_64-linux-gnu/bits/string2.h:51,
from ARMTOOLCHAIN/usr/include/string.h:637,
from src/utils.c:21:
src/utils.c: In function ‘sbuf_put_be16’:
src/utils.c:397:9: error: invalid 'asm': invalid operand for code 'w'
u16 = htons(u16);
^
内搜索ARMTOOLCHAIN/usr/include/arm-linux-gnueabihf
子目录。我尝试指定bits
作为选项,并在-IARMTOOLCHAIN/usr/include/arm-linux-gnueabihf
内创建bits
的符号链接(以避免ARMTOOLCHAIN/usr/include
),但这些都不起作用。
答案 0 :(得分:0)
尝试在cflags
调用中修改configure
:
--cflags="-DOPENSSL_USE_DEPRECATED -nostdinc -nostdinc++"