avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] undefined reference to `fopen' and undefined referenc


From: David Brown
Subject: Re: [avr-gcc-list] undefined reference to `fopen' and undefined reference to `strtok'
Date: Tue, 15 Nov 2011 15:29:51 +0100
User-agent: Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20111105 Thunderbird/8.0

Hi,

You are trying to use file IO calls that are dependent on an operating system, such as Linux. While it is certainly /possible/ to implement them on an AVR, it is very unlikely to make sense.

If you want to do insertion sorts on a text file, use a PC. If you want to program an AVR, write microcontroller programs for it.

mvh.,

David



On 15/11/2011 14:07, Jum wrote:
Hi,

I wrote a c program to read arrays from a txt file and then do a
insertion sort. It runs OK while compiling in gcc. However, I need to
convert it to elf file by using ‘avr-gcc –o filename.elf –mmcu=atmega128
filename.c’ command. And then things happened as following:

address@hidden:~$ avr-gcc -o fget.elf -mmcu=atmega128 fget.c

fget.c: In function 'convert':

fget.c:29: warning: assignment makes pointer from integer without a cast

fget.c:36: warning: assignment makes pointer from integer without a cast

fget.c: In function 'main':

fget.c:73: warning: initialization makes pointer from integer without a cast

/tmp/ccWExtSv.o: In function `convert':

fget.c:(.text+0x124): undefined reference to `strtok'

fget.c:(.text+0x170): undefined reference to `strtok'

/tmp/ccWExtSv.o: In function `main':

fget.c:(.text+0x31c): undefined reference to `fopen'

My C file is shown below like :

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#define LIST_SIZE 200

int fgetline(FILE *fp, char s[], int lim) {

char *t;

int c, len=lim;

t = s;

while (--lim>1 && (c=getc(fp)) != EOF && c != '\n')

*s++ = c;

if (c == '\n')

*s++ = c;

else if (lim == 1) {

*s++ = '\n';

fprintf(stderr, "WARNING. fgetline: Line too long, splitted.\n");

}

*s = '\0';

return s - t;

}

void convert(char* sData, int* num_list){

char* pch;

int i = 0;

int v;

pch = strtok(sData, " ");

while(1)

{

if(pch == NULL)

break;

v = atoi(pch);

num_list[i++]=v;

pch = strtok( NULL, " ");

}

}

void insertion_sort(FILE* fp , int * num_list){

char sData[1000];

int value;

int i, j,done;

fgetline(fp,sData,1000);

convert(sData, num_list);

for(i=1; i<LIST_SIZE; i++)

{

value = num_list[i];

j = i - 1;

done = 0;

while (!done)

{

if (value < num_list[j])

{

num_list[j+1] = num_list[j];

j--;

if (j < 0)

done = 1;

}

else

done = 1;

}

num_list[j+1] = value;

}

}

int main(void){

int i;

FILE* fp = fopen("200.txt", "r"); // there are 10K random permutations
of 200 number list

for(i=0;i<10000;i++)

{

int num_list[LIST_SIZE];

insertion_sort(fp,num_list);

}

asm volatile("break");

return 1;

}

Iwill appreciate if someone could help me out from this. Thanks a million

Best Regards

Jum



_______________________________________________
AVR-GCC-list mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/avr-gcc-list




reply via email to

[Prev in Thread] Current Thread [Next in Thread]