如何安装gcc交叉编译器

发布于 2024-11-02 03:16:54 字数 2179 浏览 7 评论 0原文

我在尝试在 Linux 下安装交叉编译器时遇到困难。 我下载了一个工具链,看起来没问题,但下一步是什么?我需要在控制台中输入什么命令才能安装它?

目的是将 C 代码转换为 MIPS(小端)代码。

实际上我一次只需要 2 个代码,所以如果有人只能在 MIPS 中向我展示这些代码,我会非常高兴...

第一个代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 128

int main ()

{
    char mychar , string [SIZE];
    int i;
    int count =0 ;  

    printf ("Please enter your string: \n\n");
    fgets (string, SIZE, stdin);

    printf ("Please enter char to find: ");
    mychar = getchar();

    for (i=0 ; string[i] != '\0' ; i++ )
        if ( string[i]  == mychar )
            count++;

    printf ("The char %c appears %d times\n" ,mychar ,count);


    return 0;
}

第二个代码:

#include <stdio.h>
#include <string.h>

void SIFT(int x_arr[ ], int y_arr[]);

int main ()
{
    int x[20] = {0} , y[20] = {0};
    int m=0,temp=0,curr=0,i=0,j=0;

    printf("Please enter your numbers now:\n\n");

    /*enter numbers one by one. if x[i+1] value < x[i] value, err msg.
      when user want to end the series he must enter '0' which means end of string (it wont       included in x[]) */
    while ( (scanf("%d",&temp) ) != 5 )
    {
        if (temp >= curr)
        {
            x[i] = temp;
            curr = temp;
            i++;
        }
        else
        {
            printf("The numbers are not at the right order !\n\nProgram will now terminate...\n\n");
        }
    }

    SIFT(x,y);

    for (i=0 ; y[i]=='0' ; i++) /*strlen(y) without ('0')'s includes*/
        m++;

    /*Prints  m , y's organs*/
    printf("\n\nm = %d",m);
    printf("Y = ");
    while (y[j]!='0')
    {
        printf ("%d ,",y[j]);
        j++;
    }

return 0;
}

void SIFT(int x_arr[ ], int y_arr[])
{
    int i=0,j=0;

    while (x_arr[i] != '0')
    {
        if (x_arr[i] == x_arr[i+1]) /*if current val. equals next val. -> jump dbl at x_arr*/
        {
            y_arr[j] = x_arr[i];
            i+=2;
            j++;
        }
        else
        {
            y_arr[j]=x_arr[i];
            i++;
            j++;
        }
    }    

}

I'm having difficult while trying to install a cross compiler under linux.
I downloaded a toolchain that seems to be ok but what's next ? what orders I need to type in the console to make it to be installed ?

The purpose is to convert a C code to MIPS (little endian) code.

Actually I need it once for only 2 codes, so if someone can only show me those codes in MIPS, I will be more than happy...

first code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 128

int main ()

{
    char mychar , string [SIZE];
    int i;
    int count =0 ;  

    printf ("Please enter your string: \n\n");
    fgets (string, SIZE, stdin);

    printf ("Please enter char to find: ");
    mychar = getchar();

    for (i=0 ; string[i] != '\0' ; i++ )
        if ( string[i]  == mychar )
            count++;

    printf ("The char %c appears %d times\n" ,mychar ,count);


    return 0;
}

second code:

#include <stdio.h>
#include <string.h>

void SIFT(int x_arr[ ], int y_arr[]);

int main ()
{
    int x[20] = {0} , y[20] = {0};
    int m=0,temp=0,curr=0,i=0,j=0;

    printf("Please enter your numbers now:\n\n");

    /*enter numbers one by one. if x[i+1] value < x[i] value, err msg.
      when user want to end the series he must enter '0' which means end of string (it wont       included in x[]) */
    while ( (scanf("%d",&temp) ) != 5 )
    {
        if (temp >= curr)
        {
            x[i] = temp;
            curr = temp;
            i++;
        }
        else
        {
            printf("The numbers are not at the right order !\n\nProgram will now terminate...\n\n");
        }
    }

    SIFT(x,y);

    for (i=0 ; y[i]=='0' ; i++) /*strlen(y) without ('0')'s includes*/
        m++;

    /*Prints  m , y's organs*/
    printf("\n\nm = %d",m);
    printf("Y = ");
    while (y[j]!='0')
    {
        printf ("%d ,",y[j]);
        j++;
    }

return 0;
}

void SIFT(int x_arr[ ], int y_arr[])
{
    int i=0,j=0;

    while (x_arr[i] != '0')
    {
        if (x_arr[i] == x_arr[i+1]) /*if current val. equals next val. -> jump dbl at x_arr*/
        {
            y_arr[j] = x_arr[i];
            i+=2;
            j++;
        }
        else
        {
            y_arr[j]=x_arr[i];
            i++;
            j++;
        }
    }    

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

↘人皮目录ツ 2024-11-09 03:16:54

您可能想尝试使用 crosstool-NG 为您的项目构建和安装工具链系统。

You may want to try using crosstool-NG to build and install a toolchain for your system.

过气美图社 2024-11-09 03:16:54

我不确定这是否对您有帮助,但我已经使用 ecc (http://ellcc.org) 编译了您的源文件并得到:

http://pastebin.com/keDPEcsc

希望

http://pastebin.com/zQBsMVfS

有帮助。

I'm not sure if this will help you but I've compiled your source files using ecc (http://ellcc.org) and got:

http://pastebin.com/keDPEcsc

and

http://pastebin.com/zQBsMVfS

Hope that helps.

汹涌人海 2024-11-09 03:16:54

你需要使用工具链构建你自己的版本 - 它本身不是一个编译器,它会创建一个。看看 http://www.kegel.com/crosstool/crosstool -0.43/doc/crosstool-howto.html

you need to build you own version with toolchain - it is not a compiler on it's own, it will make one. look at http://www.kegel.com/crosstool/crosstool-0.43/doc/crosstool-howto.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文