1 00:00:00,220 --> 00:00:02,300 [Powered by Google Translate] [Tee, rõkkama] 2 00:00:02,300 --> 00:00:03,970 [Nate Hardison] [Harvardi Ülikool] 3 00:00:03,970 --> 00:00:07,290 [See on CS50] [CS50.TV] 4 00:00:07,290 --> 00:00:11,620 Niisiis, oletame, et ma olen kirjutanud veidi C programm välja trükkida sõna "Hello, world!" 5 00:00:11,620 --> 00:00:14,550 ja ma olen salvestanud selle faili nimega hello.c. 6 00:00:14,550 --> 00:00:17,450 Kuidas tegelikult teha selle programmiga? 7 00:00:17,450 --> 00:00:20,860 Kui ma lihtsalt proovida töötab. C faili, et ei kavatse teha. 8 00:00:20,860 --> 00:00:24,800 >> Arvuti ei kavatse pidada seda C programmi nagu ma ette. 9 00:00:24,800 --> 00:00:28,530 Selgub, et kuigi K-kood tundub päris segasena alguses, 10 00:00:28,530 --> 00:00:32,470 see on ikka ei madala piisavalt arvuteid mõista. 11 00:00:32,470 --> 00:00:36,800 Enne, kui saate C koodi arvutis, tuleb esmalt koostada, 12 00:00:36,800 --> 00:00:39,540 mis muudab teie C kood masinkoodidena, 13 00:00:39,540 --> 00:00:44,380 mis - nagu nimigi ütleb - on kahendvormingus et masin saab aru. 14 00:00:44,380 --> 00:00:48,240 >> Lihtsaim viis seda teha on lihtsalt kasutada käsku nimega "teha." 15 00:00:48,240 --> 00:00:52,690 Tee on utiliit koostamise lähtekoodi. 16 00:00:52,690 --> 00:00:58,170 See ei ole kompilaator ise, vaid pigem programm, mis korraldab invocations koostaja 17 00:00:58,170 --> 00:01:01,660 aasta lähtekoodi faile nii, et asjad koostatud nõuetekohasust 18 00:01:01,660 --> 00:01:08,280 ja õige tee, sest kompilaatori lipud saavad omamoodi keeruline, nagu me näeme. 19 00:01:08,280 --> 00:01:12,610 See on eriti kasulik, kui te töötate koos suuri projekte, kus on palju lähtekoodi failid 20 00:01:12,610 --> 00:01:14,630 ja palju erinevaid teeke. 21 00:01:14,630 --> 00:01:19,450 Aga see on ka tore, et seda kasutada, kui sa oled lihtsalt töötab ühes failis. 22 00:01:19,450 --> 00:01:22,610 Niisiis, oletame, koostab selle "Hello, world!" Programmi abil teha. 23 00:01:22,610 --> 00:01:28,220 Nimi minu lähtekoodi fail on hello.c, nii et ma kirjuta teha tere, 24 00:01:28,220 --> 00:01:31,680 ja teha kasutab oma Vaikeseadistusest nende kogumiseks. 25 00:01:31,680 --> 00:01:37,640 >> Eeldusel, et kõik läheb hästi, saan kasutada ls käsk nimekirja kõik failid kataloogi, 26 00:01:37,640 --> 00:01:40,540 ja ma peaks nägema uus fail nimega "tere." 27 00:01:40,540 --> 00:01:43,380 See fail nimega "käivitatav" 28 00:01:43,380 --> 00:01:47,160 ja see on kahendvormingus et arvuti saab aru. 29 00:01:47,160 --> 00:01:51,370 Kui me seda avatumaks, näeme mõningaid märke, et me saame aru, 30 00:01:51,370 --> 00:01:54,810 kuid enamasti on see lihtsalt hunnik Hölynpöly. 31 00:01:54,810 --> 00:02:00,920 Kuid ma saan käivitada seda faili ja vaadata seda välja trükkida "Tere, maailm!" ikka ja jälle. 32 00:02:00,920 --> 00:02:03,420 >> Oh, põnevust! 33 00:02:03,420 --> 00:02:06,650 Nii, lähme tagasi natuke meie make ja vaata, mis tegelikult juhtus 34 00:02:06,650 --> 00:02:09,580 et toota käivitatava faili. 35 00:02:09,580 --> 00:02:12,690 Te näete, et kui ma jooksin teha, see välja trükkida seda joont 36 00:02:12,690 --> 00:02:16,430  alustades "rõkkama" ja lõpetades "tere." 37 00:02:16,430 --> 00:02:21,770 Seda teha tuginedes kompilaator - antud juhul üks nn "rõkkama" 38 00:02:21,770 --> 00:02:27,720 Kimbu default lipud või võimalusi, et toota meie käivitatav. 39 00:02:27,720 --> 00:02:31,380 >> Rõkkama on üks mitmest C kompilaatorid seal maailmas. 40 00:02:31,380 --> 00:02:34,050 Te olete kuulnud või kasutanud muid riske, 41 00:02:34,050 --> 00:02:38,260 eriti üks nn "gcc", mis on eriti levinud. 42 00:02:38,260 --> 00:02:42,160 Me oleme otsustanud kasutada rõkkama sisse CS50, sest me arvame, et on tõesti head tööd 43 00:02:42,160 --> 00:02:45,220 pakkuda kasulikke hoiatusi ja veateateid 44 00:02:45,220 --> 00:02:48,480 ja kuna kasutades on tõesti sarnane kasutades gcc, 45 00:02:48,480 --> 00:02:52,100 nii saab päris kergesti vahetada kaks. 46 00:02:52,100 --> 00:02:56,050 >> Kui teha jooksis rõkkama, siis jooksis ta terve hunnik võimalusi. 47 00:02:56,050 --> 00:02:59,360 Kuid see ei ole vaja kasutada kõiki neid võimalusi 48 00:02:59,360 --> 00:03:03,090  lihtsalt koostada ühtset. C lähtekoodi faili. 49 00:03:03,090 --> 00:03:07,540 Kõik ma pean tegema, on kasutada rõkkama hello.c. 50 00:03:07,540 --> 00:03:12,430 Jällegi, kui kõik hästi läheb, see toodab käivitatava faili. 51 00:03:12,430 --> 00:03:19,670 Siiski, kui ma püüan töötab. / Hello, ma saan veateate, öeldes, et seal ei ole sellist faili või kataloogi. 52 00:03:19,670 --> 00:03:20,910 Mis juhtus? 53 00:03:20,910 --> 00:03:25,030 Rõkkama vaikimisi nimed oma käivitatavad a.out, 54 00:03:25,030 --> 00:03:28,640 mida me näeme, kui me nimekirja kataloog ls. 55 00:03:28,640 --> 00:03:34,210 See fail saame joosta, ja seda ka välja trükkida "Tere, maailm!" nagu ette nähtud. 56 00:03:34,210 --> 00:03:36,660 >> Kui me tahame ümber käivitatava, 57 00:03:36,660 --> 00:03:38,900 saame kasutada move käsu seda teha, 58 00:03:38,900 --> 00:03:43,040 kuid enamiku ajast me lihtsalt tahame rõkkama teha õige nime meile. 59 00:03:43,040 --> 00:03:46,280 Me saame seda teha koos-o lipu. 60 00:03:46,280 --> 00:03:50,160 Kui ma jooksen rõkkama hello.c-o hello, 61 00:03:50,160 --> 00:03:53,100 Siis ma saan käivitatava nimega "tere." 62 00:03:53,100 --> 00:03:58,080 -O valik on super levinud, nii et oodata ja kasutan seda palju. 63 00:03:58,080 --> 00:04:02,670 Järgmise rõkkama võimalusi, et näete palju algama-W. 64 00:04:02,670 --> 00:04:06,800 Need valikud määravad, milliseid hoiatusi rõkkama annab sulle oma kood. 65 00:04:06,800 --> 00:04:12,060 Näiteks rõkkama võib hoiatada, kui te deklareerite muutuja, mis on kunagi kasutanud. 66 00:04:12,060 --> 00:04:15,580 Kui ma panen int muutuja nimega x on hello.c 67 00:04:15,580 --> 00:04:22,520 ja seejärel kompileerida koos rõkkama-Wunused muutujaga hello.c-o hello, 68 00:04:22,520 --> 00:04:26,270 Rõkkama hoiatab mind selle kasutamata muutuja minu koodi. 69 00:04:26,270 --> 00:04:28,800 >> Nüüd on tonni erinevaid hoiatus tüübid, 70 00:04:28,800 --> 00:04:32,920 ja see oleks ebameeldiv on neid kõiki loetleda välja, kui sa jooksed rõkkama. 71 00:04:32,920 --> 00:04:38,570 Selle asemel on otsetee võimalus muuta need kõik - Seina. 72 00:04:38,570 --> 00:04:42,020 Meil on see vaikimisi sisse lülitatud, kui sa jooksed teha aparaat, 73 00:04:42,020 --> 00:04:45,970 nii saad kõik hoiatused, et rõkkama teile anda oma kood. 74 00:04:45,970 --> 00:04:50,620 Üldiselt võttes oma koodi toota koostamise hoiatusi ei ole hea asi, 75 00:04:50,620 --> 00:04:55,160 ja me ootame programmid, mida te kirjutada CS50 tuleb hoiatus tasuta. 76 00:04:55,160 --> 00:04:59,290 Kuid nagu näete, rõkkama ikkagi toota käivitatava faili 77 00:04:59,290 --> 00:05:02,940 isegi kui seal on hoiatus ajal koostamise protsessi. 78 00:05:02,940 --> 00:05:07,200 Me ei saa siiski sundida rõkkama lõpetada koostamine ja toota viga 79 00:05:07,200 --> 00:05:10,440 kui tal tekib midagi väärt hoiatuse koodi. 80 00:05:10,440 --> 00:05:14,000 Me teeme seda koos-Werror võimalus. 81 00:05:14,000 --> 00:05:18,830 >> Nüüd, kui ma kompileerida minu hello.c faili kasutamata int muutuja x, 82 00:05:18,830 --> 00:05:21,190 Ma ei saa käivitatava faili. 83 00:05:21,190 --> 00:05:23,880 Nüüd ma ei saa eirata koostamise hoiatusi. 84 00:05:23,880 --> 00:05:25,900 Ma pean minema määrata minu koodi. 85 00:05:25,900 --> 00:05:30,030 Teine oluline võimalus on-ggdb. 86 00:05:30,030 --> 00:05:33,640 See võimaldab eri silumisinfoga käivitatava faili, 87 00:05:33,640 --> 00:05:37,820 nii et ma saan käivitada siluri gdb, kui see kokku jookseb. 88 00:05:37,820 --> 00:05:42,080 Ilma seda võimalust, ma ei pääse palju minu programmi teabe gdb 89 00:05:42,080 --> 00:05:44,660 nagu muutuja ja funktsioonide nimed, 90 00:05:44,660 --> 00:05:48,410 nii et see on oluline lisada-ggdb ka. 91 00:05:48,410 --> 00:05:53,120 Kui sa jooksed teha seadmele, see võimalus on ka vaikimisi. 92 00:05:53,120 --> 00:05:56,820 >> Viimane võimalus, et see on oluline teada on-l, 93 00:05:56,820 --> 00:05:59,320 mida kasutatakse teekide oma kood. 94 00:05:59,320 --> 00:06:04,190 Näiteks kui soovite kasutada funktsioone CS50 raamatukogu, nagu getString, 95 00:06:04,190 --> 00:06:09,200 sa pead veenduge, et mitte ainult sa # include raamatukogu päisefail, CS50.h, 96 00:06:09,200 --> 00:06:11,350 oma. C lähtekoodi faili 97 00:06:11,350 --> 00:06:15,250 kuid ka seda, et te kasutate-lcs50 koostamisel, 98 00:06:15,250 --> 00:06:19,370 nii et raamatukogu elluviimine on seotud oma programmi. 99 00:06:19,370 --> 00:06:24,300 Muudame Tere maailm programm ajendab kasutaja jaoks nime getString funktsioon 100 00:06:24,300 --> 00:06:27,740 ja siis kasuta nime meie tere string. 101 00:06:27,740 --> 00:06:33,190 >> Nüüd, kui me püüame koostada selle programmi o kasutades-lcs50, 102 00:06:33,190 --> 00:06:36,790 saame veast määratlemata viide getString. 103 00:06:36,790 --> 00:06:43,580 Uh oh! Olgem lisada-lcs50, ja nüüd kõik töötab just fine. 104 00:06:43,580 --> 00:06:49,510 >> Üks gotcha on see, et see ei tee vahet, kus on käsk, mida kirjutad-lcs50. 105 00:06:49,510 --> 00:06:55,770 Kui ma kirjutan selle enne kui ma kirjutan hello.c, siis CS50 raamatukogu on koormatud ja töödeldud 106 00:06:55,770 --> 00:06:57,920 enne minu lähtekoodi. 107 00:06:57,920 --> 00:07:01,430 Niisiis, see on sama, kui ma ei kirjuta-lcs50 üldse. 108 00:07:01,430 --> 00:07:05,580 Nagu rusikareegel, siis tavaliselt tahavad panna kõik oma-l valikuid 109 00:07:05,580 --> 00:07:08,070 aasta lõpus oma käsk. 110 00:07:08,070 --> 00:07:10,490 Nii, nüüd lähme panna see kõik koos. 111 00:07:10,490 --> 00:07:20,000 Rõkkama-ggdb Seina-Werror hello.c-lcs50-o hello - 112 00:07:20,000 --> 00:07:21,860 see on palju asju. 113 00:07:21,860 --> 00:07:26,720 >> Sellepärast mark on nii kasulik. Ta hoolitseb kõike seda sinu jaoks. 114 00:07:26,720 --> 00:07:30,410 >> Nii, nüüd on sul hea idee, mida läheb koostamise oma kood. 115 00:07:30,410 --> 00:07:33,470 Minu nimi on Nate Hardison. See on CS50. 116 00:07:33,470 --> 00:07:36,470 [CS50.TV]