在linux系统开发板上使用U盘自动升级程序交叉编译时遇到的出错原因

错误原因在于sprintf函数的第一个参数需要是char型指针,access和system函数同理,网上很多代码将第一个参数的类型定义成了unsigned char类型,使用交叉编译时就会报错。

以下为U盘自动升级程序的代码

#include  
#include  
#include  
#include  
#include  
#include  
#include  

unsigned char ch[8] = {'a','b','c','d','e','f','g','h'};
int main(int argc,char **argv)
{
    int fd;
    char UDevPath[64];
    char UpdateFilePath[64];
    char cmd[64];

    int i = 0;
    int j = 0;
    
    for(j = 0; j < 4; j ++){
        for(i = 0; i < 8; i++){
            sprintf(UpdateFilePath,"/media/sd%c%d/UpDate",ch[i],j);
            sprintf(UDevPath,"/media/sd%c%d",ch[i],j);
//            fd = open(UpdateFilePath,O_RDWR);
            fd = access(UpdateFilePath,F_OK);
            if(fd == -1){
                continue;
            }
            else{
                printf("open device %s \n",UpdateFilePath);
                break;
            }
        }
        if(fd != -1){
            break;
        }
    }
    if(fd == -1){
        printf("can not find any U device! \n");
    }
    else{
        close(fd);
        sprintf(cmd,"sh %s %s",UpdateFilePath,UDevPath);
        system(cmd);
    }
    return 0;
}
 

你可能感兴趣的:(LINUX开发板)