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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: بهروز رمضانی در 28 اسفند 1392، 10:58 ق‌ظ

عنوان: افزودن کتابخانه cs50 به xubuntu 12.04
ارسال شده توسط: بهروز رمضانی در 28 اسفند 1392، 10:58 ق‌ظ
سلام
قصد دارم کتابخانه cs50 را به زوبونتو اضافه کنم . طبق این راهنما عمل کردم اما زمان کامپایل ارور زیر را میده .
https://manual.cs50.net/library/#_debian_ubuntu (https://manual.cs50.net/library/#_debian_ubuntu)
این متن برنامه و ارور آن
#include <cs50.h>
#include <stdio.h>

int main(void)
{
string name;
printf("Whats is your name?\n");
name = GetString();
printf("hello,%s\n",name);
}

behrooz@behrooz-Lenovo-G500:~/Documents/c++$ clang -o hello hello.c
/tmp/hello-lhP1sh.o: In function `main':
hello.c:(.text+0x22): undefined reference to `GetString'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
عنوان: پاسخ : افزودن کتابخانه cs50 به xubuntu 12.04
ارسال شده توسط: احمد حمزه ئی در 28 اسفند 1392، 10:18 ب‌ظ
سلام منم از Xubuntu 12.04 استفاده می کنم!
فکر کنم باید مسیر کتابخانه رو هم به کامپایلر بدید:
ahmad@ahmad-desktop:~/test$ cat hello.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
string name;
printf("Whats is your name?\n");
name = GetString();
printf("hello,%s\n",name);
return 0;
}
ahmad@ahmad-desktop:~/test$ gcc -O2 -o hello.out hello.c /usr/local/lib/libcs50.a
ahmad@ahmad-desktop:~/test$ ./hello.out
Whats is your name?
Ahmad
hello,Ahmad

تا حالا از clang استفاده نکردم اما احتمالا باید مثل gcc مسیر کتابخانه رو وارد کنید.
عنوان: پاسخ : افزودن کتابخانه cs50 به xubuntu 12.04
ارسال شده توسط: بهروز رمضانی در 28 اسفند 1392، 10:41 ب‌ظ
با دستور زیر میتونم سورس را کامپایل کنم .
clang -o hello hello.c -lcs50
اما جالب هست ، در فیلم آموزشی که گذاشتن دستور بالا بدونه سوئیچ اخری یعنی
-lcs50سورس را کامپایل میکنه و هر دو دستور هم یک خروجی را میده ، این تفاوت از کجا نشات میگیره ؟
عنوان: پاسخ : افزودن کتابخانه cs50 به xubuntu 12.04
ارسال شده توسط: احمد حمزه ئی در 28 اسفند 1392، 11:57 ب‌ظ
این تفاوت از کجا نشات میگیره ؟
والا فکر می کنم که کامپایلر بصورت پیش فرض فقط کتابخانه استاندارد زبان سی رو جستجو می کنه.
و برای استفاده از بقیه کتابخانه ها باید نام کتابخانه رو به کامپایلر بدیم.
در مورد اینکه چطور توی فیلم بدون دادن نام کتابخانه، تونستن برنامه رو کامپایل کنن نظری ندارم!
اما میشه با نوشتن Makefile کار کامپایل رو فقط با یه دستور make انجامش داد.
این طوری نیاز نیست که هر دفعه دستور کامپایل رو بنویسیم.
عنوان: پاسخ : افزودن کتابخانه cs50 به xubuntu 12.04
ارسال شده توسط: بهروز رمضانی در 01 فروردین 1393، 12:12 ب‌ظ
نقل‌قول
اما میشه با نوشتن Makefile کار کامپایل رو فقط با یه دستور make انجامش داد.
چطور میتونم این کار را انجام بدم
عنوان: پاسخ : افزودن کتابخانه cs50 به xubuntu 12.04
ارسال شده توسط: احمد حمزه ئی در 02 فروردین 1393، 09:44 ب‌ظ
چطور میتونم این کار را انجام بدم
موضوع توضیح مختصری درباره make (http://forum.ubuntu.ir/index.php/topic,65912) رو مطالعه کنید.
مطالعه موضوع توضیحات مختصری درباره کامپایلر و cflags (http://forum.ubuntu.ir/index.php/topic,65877) هم خالی از لطف نیست.