1. gcc ์ปดํ์ผ
1.1 gcc ์ปดํ์ผ ์ต์
-o
c์ฝ๋ ํ์ผ์ ์ปดํ์ผํ๋ฉฐ, ์ง์ ํ ์ด๋ฆ์ผ๋ก ์ถ๋ ฅ ํ์ผ์ ์ ๊ณตํ๋ค.
-Werror
์์ค๋ฅผ ์ปดํ์ผํ๊ณ , ํ๋ก๊ทธ๋จ์ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๋ค.
-Wall
์ค๋ฅ์ ๊ฒฝ๊ณ ๋ฅผ ๋ชจ๋ ํ์ธํ๋ค.
-ggdb3
gdb๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ๋๋ฒ๊น ํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ค.
-g ์ต์ ์ ๋๋ฒ๊น ์ ์ํ ๊ฒ์ด๋ค.
-lm
math.h ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ค ํ์ผ์ ์ฐ๊ฒฐํ๋ค.
-l ์ต์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฐ๊ฒฐ์ ์ฌ์ฉ๋๋ค.
-std=c11
source.c ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ๊ธฐ ์ํด ํ์ค์ c11 ๋ฒ์ ์ ์ฌ์ฉํ๋ค.
๋ฃจํ ์ด๊ธฐํ์์ ๋ณ์๋ฅผ ์ ์ํ ์ ์์ผ๋ฉฐ, ๋ณดํต ์ต์ ํ์ค ๋ฒ์ ์ ์ฌ์ฉํ๋ค.
-c
ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฐ์ฒด ํ์ผ์ ์ถ๋ ฅํ๋ค.
-v
์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.
-S
์ด์ ๋ธ๋ฆฌ์ฝ๋๋ฅผ ์์ฑํ๋ค.
gcc -S -o src.asm src.c
1.2 gcc ์ปดํ์ผํ๊ธฐ
geditor๋ฅผ ์ด์ฉํด src.c ํ์ผ์ ์์ฑํ๋ค.
$ gedit src.c &
์์ ์ฝ๋์ฒ๋ผ & ์ฐ์ฐ์๋ฅผ ๋ถ์ด๋ฉด, ์ฝ๋ ์๋ํฐ ์คํ์ฐฝ์ ๋์ง ์์๋ ํฐ๋ฏธ๋ ์ฐฝ์ ์ ๋ ฅ์ด ๊ฐ๋ฅํ๋ค.
์๋๋ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ๊ฐ๋จํ ํ์ผ์ด๋ค.
/*src.c*/
#include <stdio.h>
main(){
printf("hello world!!");
}

๋ฌธ์์ด์ด ์ถ๋ ฅ๋๋ค.
/
์๋๋ math.h ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์ด๋ค.
/*src2.c*/
#include <math.h>
#include <stdio.h>
int main() {
printf("Square root of %lf is %lf\n", 225.0, sqrt(225.0));
printf("Square root of %lf is %lf\n", 300.0, sqrt(300.0));
return (0);
}
sqrt๋ ์ ๊ณฑ๊ทผ ๊ณ์ฐ์ ํ๋ค.

-lm ์ต์ ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐํด์ค๋ค.
2. sscanf
sscanf ( ์ ๋ ฅ, ํฌ๋งท, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์น )
/*sscanf_test.c*/
#include <stdio.h>
int main() {
char sentence [] = "John is 12 years old";
char str [10];
int i;
sscanf (sentence, "%s is %d", str, &i);
printf ("%s -> %d\n", str, i);
return 0;
}

/
/*sscanf_test2.c*/
#include <stdio.h>
int main() {
char sentence []="John_nnnnn_nnnnn is 12312312319982312 years old";
char str [10];
int i;
sscanf (sentence, "%s is %d", str, &i);
printf ("%s -> %d\n", str, i);
return 0;
}
๊ฐ๊ฐ str์ ๋ฒ์๋ฅผ ์ด๊ณผํ๋ ๋ฌธ์์ด๊ณผ, integer๊ฐ ์ ์ฅํ ์ ์๋ ํฐ ์ซ์๊ฐ ์ง์ ๋์๋ค.

์ปดํ์ผ ํ ์คํํ๋ฉด, ์ค๋ฒํ๋ก์ฐ๋ฅผ ํ์ธํ ์ ์๋ค.
์ด๋ฆ์ ๊ฒฝ์ฐ 10์๊ฐ ๋์ด๊ฐ๋๋ฐ, ์ถ๋ ฅ๋๊ธด ํ๋ค.
3. Argc/Argv

/*arg_test.c*/
#include <stdio.h>
int main(int argc, char *argv[]) {
int count;
printf ("This program was called with \"%s\".\n", argv[0]);
if (argc > 1) {
for (count =1; count < argc; count++){
printf("argv[%d] = %s\n", count, argv[count]);
}
}
else {
printf("The command had no other arguments.\n");
}
return 0;
}
main ๊ดํธ ์์, ์ฌ์ฉ์๊ฐ ์คํํ๋ ๋ช ๋ น์ ํํ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ ํ๋ผ๋ฏธํฐ์ด๋ค.

๋ง์ง๋ง ๋ช ๋ น์ argc๊ฐ 5๊ฐ์ธ ๊ฒ์ด๋ค.
'๐ ๋ณด์ยท์ทจ์ฝ์ > ๐ธ์์คํ ยท์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Windows] ์๋์ฐ์ฆ ๋ฉ์์ง ํํน (0) | 2024.10.02 |
|---|---|
| [OS] ์์คํ ๊ตฌ์กฐ (0) | 2023.10.01 |
| [dreamhack] Exploit Tech: Shellcode (0) | 2023.07.13 |
| [dreamhack] Background: Computer Architecture (0) | 2023.07.10 |
| [dreamhack] System Hackig Introduction (0) | 2023.07.08 |