Android问题集锦之四十五:undefined reference to 'srand'

ndk 10b~10e在编译使用C随机数函数srand和rand时没有问题,
可是程序运行时就报类似下面的错误:

 error: undefined reference to 'srand'
 error: undefined reference to 'rand'

这让我百思不得其解。
我先后做了如下尝试:
1、有网友说我的ndk版本太低了,要用高一些的。
我就将原来使用的10b换成了10e,结果还是不行。
2、有网友说要将交叉编译器换成高版本的,我更新了,结果还是不行。
3、有网友说不要用64位的ndk,要用32位的。我又新下载了32位的10e,还是不行。

就在我崩溃的要放弃的时候,国外网友提到了stdlib.h,好像昨天就有看到这个头文件的问题。
我试着加入这个头文件,再编译运行,通过了!

这可能是bionic库做的调整吧,与原C标准库有些差异。不过既然没问题了,还是值得高兴一下!

#include "shooter.h"
#include <stdlib.h>
#include <stdio.h>

void bubble_sort(int *array,int n) {
    int i,j,tmp;
    for(i=0;i<n-1;i++) {
        for(j=n-1;j>i;j--) {
            if(array[j-1]>array[j]) {
                tmp = array[j-1];
                array[j-1]=array[j];
                array[j]=tmp;
            }
        }
    }
}

int A(int a) {
    int n = 10;
    int i;
    int array[n];

    srand(time(NULL));
    for(i=0;i<n;i++) {
        array[i] = rand()%100+1;
        printf("%d, ",array[i]);
    }   

    printf("\n");
    bubble_sort(array,n);
    return array[0];
}

参考:
http://stackoverflow.com/questions/27186706/spin-verification-undefined-reference-to-random-and-srandom

这与android不挨着,但也帮了我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值