انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: عدم کارکرد کتابخانه STDIO  (دفعات بازدید: 3257 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین agape

  • Jr. Member
  • *
  • ارسال: 92
    • هوشمند سیاره نپلاد
عدم کارکرد کتابخانه STDIO
« : 12 امرداد 1390، 06:24 ب‌ظ »
 ](*,)
سلام خسته نباشید!
من یه مشکلی دارم که خیلی عجیب و غریب و بی ریشه است - من برای AVR یه برنامه نوشتم که یه چیزی رو توی خروجی UART نشون بده
حالا کامپایل نمیشه ! نمیدونم چرا ! انگار کتابخونه STDIO.h مشکل داره برنامه این هست:
    #include <stdio.h>

    static int uart_putchar(char c, FILE *stream);

    static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,
                                             _FDEV_SETUP_WRITE);

    static int
    uart_putchar(char c, FILE *stream)
    {

      if (c == '\n')
        uart_putchar('\r', stream);
      loop_until_bit_is_set(UCSRA, UDRE);
      UDR = c;
      return 0;
    }

    int
    main(void)
    {
      init_uart();
      stdout = &mystdout;
      printf("Hello, world!\n");

      return 0;
    }
این دقیقا همون کدی هست که توی مثال های کتابخونه برای کار با این کتابخونه ارایه شده وحالا خطایی که میده اینه
main.c:(.text+0x1e)||undefined reference to `stdout'|حاکی از این که  stdout تعریف نشده
کل نت رو زیر و رو کردم چیزی دستگیرم نشد !
همین کد رو توی ویندوز برای winavr نوشتم که همون gcc تحت ویندوز هست کار میکنه و مشکلی نداره !
گفتم شاید کتابخونه خراب نصب شده اونو پاک کردم و دوباره نصب کردم ولی خوب بازم فرجی نشد
desktop:~$ sudo apt-get remove avr-libc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  avr-libc
0 upgraded, 0 newly installed, 1 to remove and 457 not upgraded.
After this operation, 29.3MB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 131904 files and directories currently installed.)
Removing avr-libc ...
desktop:~$ sudo apt-get install avr-libc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  avr-libc
0 upgraded, 1 newly installed, 0 to remove and 457 not upgraded.
Need to get 0B/5,117kB of archives.
After this operation, 29.3MB of additional disk space will be used.
Selecting previously deselected package avr-libc.
(Reading database ... 130370 files and directories currently installed.)
Unpacking avr-libc (from .../avr-libc_1%3a1.6.7-1ubuntu2_all.deb) ...
Setting up avr-libc (1:1.6.7-1ubuntu2) ...
حالا حسابی موندم توش که خوب یعنی چی ؟!این خطایی که داره میده !
در این دنیایی که درش زندگی می کنیم، هیچ چیز به آینه ئی که بعضی جاها جیوه اش را تراشیده باشند به من شبیح نیست.
فکر کنید جیوه ی آینه ئی را از بعضی جاهاش تراشیده باشند و به این دلیل نتواند چیزی را که درش منعکس می شود،سالم و کامل منعکس کند.
چه می گویید ؟!
آنچه مرا هنوز به صورت آینه نگه داشته است.....

آفلاین mani.zaeim

  • Sr. Member
  • *
  • ارسال: 287
  • جنسیت : پسر
  • Free as in Freedom
پاسخ به: عدم کارکرد کتابخانه STDIO
« پاسخ #1 : 13 امرداد 1390، 03:27 ب‌ظ »
شما باید مشکلAuthentication رو درPAM حل کنی‌
gcc nameOfFile.c -lpam -lpam_misc
1- man چیزه خوبیه
۲- google کنید
۳- خوب بخوانید

"If Windows API becomes the default on Linux then what is the point of Linux?" -- Mark Shuttleworth
MONO is Windows API

آفلاین bahman.azimii

  • Jr. Member
  • *
  • ارسال: 71
پاسخ به: عدم کارکرد کتابخانه STDIO
« پاسخ #2 : 13 امرداد 1390، 09:20 ب‌ظ »
این کد رو بعد از دستور include بنویس شاید مشکلت حل بشه :
;using namespace std

آفلاین HojjatJafary

  • Full Member
  • *
  • ارسال: 107
پاسخ به: عدم کارکرد کتابخانه STDIO
« پاسخ #3 : 14 امرداد 1390، 12:29 ق‌ظ »
نقل‌قول
main.c:(.text+0x1e)||undefined reference to
این مشکل بیشتر شبیه به Link error هست تا کامپایل error یعنی یه جورایی C runtime library رو نمی شناسه!

آفلاین bahman.azimii

  • Jr. Member
  • *
  • ارسال: 71
پاسخ به: عدم کارکرد کتابخانه STDIO
« پاسخ #4 : 14 امرداد 1390، 01:37 ق‌ظ »
کتابخانه ++c شناسه هاش رو تو یک فضای نامی به نام std تعریف میکنه تا با شناسه های تعریف شده توسط برنامه نویس اشتباه نشن برای استفاده از این شناسه ها باید با دستور ;using namespace std آنها رو به کامپایلر معرفی کنی ویا قبل از استفاده از اونها بنویسی ::std شناسه stdout رو هم که شما تو تابع main استفاده کردی به کامپایلر معرفی نکردی . شما میتونی دستورتت رو این طوری هم بنویسی:
std::stdout = &mystdout;

آفلاین agape

  • Jr. Member
  • *
  • ارسال: 92
    • هوشمند سیاره نپلاد
پاسخ به: عدم کارکرد کتابخانه STDIO
« پاسخ #5 : 18 امرداد 1390، 06:19 ب‌ظ »
آقا هیچ کدوم از این کارایی که گفته بودین کار نکرد ! ](*,)
منم نمیدونم این چشه
کلافم کرده از بس راه های مختلف رو امتحان کردم دیونه شدم!
در این دنیایی که درش زندگی می کنیم، هیچ چیز به آینه ئی که بعضی جاها جیوه اش را تراشیده باشند به من شبیح نیست.
فکر کنید جیوه ی آینه ئی را از بعضی جاهاش تراشیده باشند و به این دلیل نتواند چیزی را که درش منعکس می شود،سالم و کامل منعکس کند.
چه می گویید ؟!
آنچه مرا هنوز به صورت آینه نگه داشته است.....

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
پاسخ به: عدم کارکرد کتابخانه STDIO
« پاسخ #6 : 19 امرداد 1390، 06:33 ب‌ظ »
مشکل اون نیست. شما به جای اینکه یه خط رو که فکر میکنید خطا اونجا اتفاق اافتاده، کل خطا رو کپی کنید. اگه کد شما دقیقا همینه که یه چند تایی include کم داره.
مینیمم اینا رو کم داره :
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <avr/sfr_defs.h>
و نکته دیگه اینکه تابع       init_uart() رو خودتون باید نوشته باشید، تا اونجا که من میدونم چنین تابعی نداریم.
اون تابع رو که حذف کنید-یا خودتون بدنه اونو بنویسید-، و اون include ها رو اضافه کنید درست کامپایل میشه.