如何解决位置无关的可执行错误

时间:2017-11-16 19:01:47

标签: 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(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;
}

编译错误:

error : only position independent executables (PIE) are supported.

1 个答案:

答案 0 :(得分:0)

通常,对于Android设备,本机代码必须使用-fpic选项进行编译,以获取与位置无关的代码,并与-pie选项链接,以告知链接器产生以下位置:独立的可执行文件(与Android 9.0“ Pie”无关)。

我对cppdroid不熟悉,但是它大概可以显示用于编译器和链接器的选项了吗?如果您仍然有此问题,并发布您的选项列表,我也许可以提供更具体的帮助。