Android 如何解决位置无关的可执行错误
在我的android 5.1手机中,我在cppdroid 3.3.2的所有代码中都出现了这个错误。 但在更新最新版本后,我面临着这个问题。在更新之前,一切正常。 我是编程的初学者。请帮帮我 我的代码:Android 如何解决位置无关的可执行错误,android,c,Android,C,在我的android 5.1手机中,我在cppdroid 3.3.2的所有代码中都出现了这个错误。 但在更新最新版本后,我面临着这个问题。在更新之前,一切正常。 我是编程的初学者。请帮帮我 我的代码: #include <stdio.h> #include <string.h> int coin[21], make; long long int dp[21][10000]; long long int ways( int i, int a) { if
#include <stdio.h>
#include <string.h>
int coin[21], make;
long long int dp[21][10000];
long long int ways( int i, int a)
{
if(a <= 0) return 1;
if(i >= 20) return 0;
if(dp[i][a] != -1) return dp[i][a];
long long int ret1 = 0, ret2 = 0;
if(a - coin[i] >= 0) ret1 = ways(i, a-coin[i]);
ret2 = ways(i+1, a);
return dp[i][a] = ret1 + ret2;
}
void make_coins()
{
int i = 0;
coin[i] = 1;
for(i++; i <= 20; i++) coin[i] = (i+1)*(i+1)*(i+1);
return ;
}
int main(void)
{
memset(dp,-1,sizeof(dp));
make_coins();
while(scanf("%d",&make) == 1) printf("%lld\n", ways(0, make));
return 0;
}
一般来说,Android设备的本机代码必须使用
-fpic
选项编译,用于位置无关代码,并与-pie
选项链接,该选项告诉链接器生成位置无关的可执行文件(与Android 9.0“pie”无关)
我不熟悉cppdroid,但它大概有办法显示它用于编译器和链接器的选项?如果您仍然有这个问题,并张贴您的选项列表,我可能能够提供更具体的帮助 不特别是这个代码。我尝试编译的所有代码都显示此错误。看起来它希望您使用指示位置独立代码的标志编译
-fpic
。但有可能用电话吗@christian_Gibbons为了便于阅读和理解:1)遵循公理:每行只有一条语句,并且(最多)每条语句有一个变量声明。2) 通过单个空行分隔代码块(用于、if、else、while、do…while、switch、case、default)。3) 用2或3个空行分隔函数(保持一致)变量(和参数)名称应表示内容
或用法
(或两者都更好)。像:i
、a
、dp
、ret1
、ret2
等名称即使在当前上下文中也毫无意义。
error : only position independent executables (PIE) are supported.