'야매!개발'에 해당되는 글 50건

야매!개발/리눅스


rm -rf /test/

이렇게 하면

^____^

/test라는 디렉토리 밑의 모든

하위 디렉토리 및 파일을

삭제한다.

0 0

야매!개발/리눅스

음.../

음.../

gdb는 어떻게 멈출수 있죠?


윈도우즈 같은 경우…

Ctrl+Break

키를 눌러주면…

잘 돌다가도 멈춘다…


그런데 gdb는 어떻게 멈출까요?



“미친감자 그걸 몰라?”

“실망이구먼~미친감자”


“예 죄송합니다.”

“구글링해보겠습니다.”;;;






E.8 Interrupts

When a program on the remote target is running, gdb may attempt to interrupt it by sending a ‘Ctrl-C’, BREAK or a BREAK followed by g, control of which is specified via gdb's ‘interrupt-sequence’.


출처 : https://sourceware.org/gdb/onlinedocs/gdb/Interrupts.html




Ctrl + C

흐흐흐.
gdb는 ‘Ctrl + C’를 입력 해주면..

달리다 멈춥니다.


윈도우 Windbg 는 ‘Ctrl + Break’ ~!

gdb는 ‘Ctrl + C’~!



0 0

야매!개발/리눅스

저는 리눅스를 

사랑할려고 합니다.

그러기에...

그 속으로 들어갑니다.~~~~

GDB와 함께~~~~

아자 

Holy Spirit~~

Give me the wisdom~~!!


0 0

야매!개발/리눅스

미친감자~~

Buildroot라는 것에 대해서 설명해봐~


잘 모르겠는데요…

빌드루트?

그게 뭐죠?~~


미친감자…나는 평화주의자야..

예수님의 이름으로 용서할께

싸다구같은것은 안떄릴께..

얼릉 찾아봐..



예수님 감사합니다~~(저는 완전 예수쟁이입니다.)


그런데..에러가 납니다.



[root@localhost ~]# git clone git://git.buildroot.net/buildroot

Cloning into 'buildroot'...

remote: Counting objects: 188132, done.

remote: Compressing objects: 100% (59389/59389), done.

remote: Total 188132 (delta 129479), reused 186192 (delta 127847)

Receiving objects: 100% (188132/188132), 45.70 MiB | 327.00 KiB/s, done.

Resolving deltas: 100% (129479/129479), done.

Checking connectivity... done.

[root@localhost ~]# cd buildroot/

[root@localhost buildroot]# make menuconfig

.

.

.





[root@localhost buildroot]# make clean && make -j4


이렇게 했는데..말입니다.

미친감자님~~에러가 납니다.



make[1]: Leaving directory '/root/buildroot'

Your Perl installation is not complete enough; at least the following

modules are missing:


        Thread::Queue


support/dependencies/dependencies.mk:28: recipe for target 'core-dependencies' failed

make: *** [core-dependencies] Error 1



이렇게 했는데..말입니다.

펄 모듈중 Thread::Queue라는 모듈이 없는가 봅니다.


흐…


방법은

http://paguilar.org/?p=426 ← 이곳에서 찾았습니다.





$ cpan

cpan shell -- CPAN exploration and modules installation (v2.00)

Enter 'h' for help.


cpan[1]> install Thread/Queue.pm



이렇게 하랍니다.



자 해봅니다.

자 그래서 cpan 부터해서 Thread::Queue 까지 설치했습니다.



[root@localhost buildroot]# dnf install cpan

Last metadata expiration check performed 0:44:25 ago on Tue Dec  1 22:05:13 2015.

Dependencies resolved.

.

.

.



Complete!


cpan 설치하고...



[root@localhost buildroot]# cpan

Loading internal null logger. Install Log::Log4perl for logging messages


CPAN.pm requires configuration, but most of it can be done automatically.

If you answer 'no' below, you will enter an interactive dialog for each

configuration option instead.


Would you like to configure as much as possible automatically? [yes] y


Perl site library directory "/usr/local/share/perl5" does not exist.

Perl site library directory "/usr/local/share/perl5" created.

Perl site library directory "/usr/local/lib/perl5" does not exist.

Perl site library directory "/usr/local/lib/perl5" created.


Autoconfiguration complete.


commit: wrote '/root/.local/share/.cpan/CPAN/MyConfig.pm'


You can re-run configuration any time with 'o conf init' in the CPAN shell

Terminal does not support AddHistory.


cpan shell -- CPAN exploration and modules installation (v2.11)

Enter 'h' for help.


cpan[1]> install Thread/Queue.pm

Fetching with HTTP::Tiny:




음…

capn을 실행하고...

install Thread/Queue.pm 해주고..

다시 빌드!!!


그런데 빌드하는데 시간이 왜이리 오래 걸리죠?

10분은 넘은것 같은데

아직도…

계속 빌딩중인군요~~!!


성공여부는 담에…~~!!







0 0

야매!개발

자 이번에는

리눅스에서

하위 디렉토리에서 파일의 내용을 찾는 명령은?


grep -r "찾을 문자열" ./*


대소문자 구분하지 않기?


-i : 지정한 문자열에 대소문자 구분하지 않기




grep -ri "찾을 문자열" ./*


이렇게 하면 된다는것~~



0 0

야매!개발

Makefile…을 만들고….

이놈을 이용해서 빌드하자…



핵심요소는


obj-y +=


이놈이다…



obj-y


obj-y


obj-y


이놈이 핵심이다.


이 키워드가 있어야….


make가 …………

빌드를 한단다…


실험해보자~~!!!


실험 개시~~!!!


test.c 파일 만들고

#include <stdio.h>


void main()

{

printf("test^___^\n");

}




Makefile 파일 만들고~~!


obj-y += test.o



자…~~


make를 해보자~~!



[root@localhost test001]# make

make: *** 타겟 없음.  멈춤.



뭐시기~~~????

타겟이 없어???


타겟을 지정해줘야 하는겨??



그런데 ‘타겟’이 뭐지?


이건가?



test:

obj-y += test.o


자….

대충 해보는 거야~~

뭐~~


다시 make~~!!


[root@localhost test001]# make

cc     test.c   -o test

오~~오~~

에러 안났어~~~

에러 없어…~~~!!

맞았어…


내 예측이 맞았어~~!


천재 천재~~~~~~!!!


[root@localhost test001]# ls -la

합계 24

drwxr-xr-x.  2 root root 4096 11월 20 18:48 .

drwx------. 18 test test 4096 11월 20 18:30 ..

-rwxr--r--.  1 root root   22 11월 20 18:48 Makefile

-rwxr-xr-x.  1 root root 7336 11월 20 18:48 test

-rwxr--r--.  1 root root   61 11월 20 18:31 test.c




test라는 실행파일이 생겼습니다.

오 그런데...object파일은 왜 없지?

지웠나?;;;스스로 지웠나???

암튼…

실행해보자…



[root@localhost test001]# ./test

test^___^



오~~오~~

정확히 찍히네~~~



obj-m


으로 해볼까???



test:

obj-m += test.o


음..obj-m 으로 해도 make 잘되네~~!


[root@localhost test001]# make

cc     test.c   -o test

[root@localhost test001]# ls -la

합계 24

drwxr-xr-x.  2 root root 4096 11월 20 18:59 .

drwx------. 18 test test 4096 11월 20 18:30 ..

-rwxr--r--.  1 root root   22 11월 20 18:58 Makefile

-rwxr-xr-x.  1 root root 7336 11월 20 18:59 test

-rwxr--r--.  1 root root   68 11월 20 18:59 test.c

[root@localhost test001]# ./test

test^_____^




obj-m으로 해도 ...make 잘된 화면입니다.~~~

믿어주세요~~!


그런데…

드라이버 파일은…

타겟이 없는데 어떻게 make가 되는 거지?

왜? 에러가 없지?


자 보시라… 커널 속….Makefile 을~~



[root@localhost test001]# make

cc     test.c   -o test

[root@localhost test001]# ls -la

합계 24

drwxr-xr-x.  2 root root 4096 11월 20 18:59 .

drwx------. 18 test test 4096 11월 20 18:30 ..

-rwxr--r--.  1 root root   22 11월 20 18:58 Makefile

-rwxr-xr-x.  1 root root 7336 11월 20 18:59 test

-rwxr--r--.  1 root root   68 11월 20 18:59 test.c

[root@localhost test001]# ./test

test^_____^





자 이제


obj-n


으로 해보자~~


test:

obj-n += test.o

make가 될까?

obj-n


뭐야???

그냥 make되잖아~~!!!

뭐여????


[root@localhost test001]# make

cc     test.c   -o test

[root@localhost test001]# ls -la

합계 24

drwxr-xr-x.  2 root root 4096 11월 20 19:28 .

drwx------. 18 test test 4096 11월 20 18:30 ..

-rwxr--r--.  1 root root   22 11월 20 19:27 Makefile

-rwxr-xr-x.  1 root root 7336 11월 20 19:28 test

-rwxr--r--.  1 root root   71 11월 20 19:27 test.c

[root@localhost test001]# ./test

test^________^

실행도 아주 잘됩니다~~~



obj-X

X의 의미는 뭐야???


아니 이런….

굳이….

obj-n


obj-y obj-m objn 같은것은

필요엢네요…


왜냐고요???

이렇게 하고 실험했으니까요…

Makefile을 이렇게 했어요

test:


타겟만 적고..어떤 파일을 빌드하라고 하는 말은 안한거죠~~!


그랬더니…


[root@localhost test001]# make

cc     test.c   -o test

[root@localhost test001]# ./test

test^_____________^



빌드 아주 잘됩니다.

아니 이런…

아니 이런….

Makefile 무식자여~~~


당신은 이제까지 뭘했단 말인가????

무식자~~~


그냥 타겟만 있으면 되는거네~~


음..그렇다면 타겟이 있으면..

현재디렉토리의 모든 소스 파일을 알아서 컴파일 해주는 것인가?

확인해보자…


  1. 새로운 c소스 파일을 만든다.

  2. 그리고...make 해본다…



[root@localhost test001]# ls -la

합계 28

drwxr-xr-x.  2 root root 4096 11월 20 19:40 .

drwx------. 18 test test 4096 11월 20 18:30 ..

-rwxr--r--.  1 root root    7 11월 20 19:35 Makefile

-rwxr-xr-x.  1 root root 7336 11월 20 19:36 test

-rwxr--r--.  1 root root   85 11월 20 19:41 test.c

-rwxr--r--.  1 root root   75 11월 20 19:40 test001.c

[root@localhost test001]# make

cc     test.c   -o test

[root@localhost test001]# cat test001.c

#include <stdio.h>


test()

{

       printf("I am test001.c's function~!");

}

[root@localhost test001]# make

make: 'test' is up to date.

[root@localhost test001]# touch test.c

[root@localhost test001]# make

cc     test.c   -o test

[root@localhost test001]# ^C




음...아니라는 점~~

뭐가 아닌가????

디렉토리의 모든 소스파일을 알아서 절대~~

절대~~

컴파일 해주지 않는다는점~~~~!!!

뭐냐???


위에서 보시면 아시겠지만…

test.c만 컴파일 했다는 점..~~

test001.c 는 그냥 무시했다는 점~~~~;;;;;

뭐지???


그럼… test001 이라는 타겟을 만들면 되나??


자..test001: 타겟 집어 넣었어~~

자~~


[root@localhost test001]# make

make: 'test' is up to date.

[root@localhost test001]# touch test.c

[root@localhost test001]# touch test001.c

[root@localhost test001]# make

cc     test.c   -o test




해도 소용 없다는 점~~;;;;;

여전히 test.c만 컴파일 한다는 점???

뭐야???

도대체


뭐야???

모르겠다…

컴파일의 기준을…

그러면…

test: 라는 라벨을 없애버리겠어~~!


음…

test001:만 남기니…

음…

test001.c 만 컴파일 하는군요…

즉 처음 나온타켓의 소스만 찾아서 컴파일하는 결론이 나오는 군요~~;;



[root@localhost test001]# touch test.c

[root@localhost test001]# touch test001.c

[root@localhost test001]# make

cc     test001.c   -o test001

test001.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int]

test()

^

/usr/lib/gcc/i686-redhat-linux/5.1.1/../../../crt1.o: In function `_start':

(.text+0x18): undefined reference to `main'

collect2: error: ld returned 1 exit status

<builtin>: recipe for target 'test001' failed

make: *** [test001] Error 1

보이시죠~~^_^(일단 에러는 무시해주세요~~지금은 make는 누구를 컴파일 하는냐 테스트니~~)

타켓이 test001이니

test001.c 만 컴파일 했습니다.

그리고, main()함수가 test001.c에는 없느니..에러를 뱉어내십니다.




[참고해야할 곳~~]

http://developinghappiness.com/?page_id=222

http://developinghappiness.com/?page_id=222

















0 0

야매!개발

부팅하면서~~

sshd를 시작하는 방법~~~


test@localhost ~]$ systemctl enable sshd.service

Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.


저의 리눅스 배포판은

패도라 입니다.




0 0

야매!개발

내가 실행했던 명령을 확인해보자….

그리고, 그놈중에 실행을 해보자..


history라는 명령이 있다.



history




history라고 입력하면…

이제까지 입력했던 명령들이 표시되고요~!

[root@localhost test]# history

   1  vi /boot/grub2/grub.cfg

   2  ls

   3  cd /usr

   4  cd lib

   5  cd ..

   6  ls

   7  cd src

   8  ls

   9  cd linux/

  10  ls

  11  make mrproper

  12  cp /usr/src/kernels/4.2.5-300.fc23.i686/.config

  13  cp /usr/src/kernels/4.2.5-300.fc23.i686/.config .

  14  make

  15  ls -lh /usr/src/linux/arch/x86/boot/bzImage

  16  cd /boot

  17  ls

  18  ls -la

  19  cd /usr/src/kernels/4.2.5-300.fc23.i686/

  20  ls -la

  21  cd /usr




이중에 다시 실행하고 싶은게 있으면~

! 을 사용하시면 됩니다.


다음 처럼~~

!2

를 입력하면~

2번째 히스토리를 실행하라는 것~~!

[root@localhost test]# !2

ls

공개  다운로드  문서  바탕화면  비디오  사진  서식  음악



느낌표가..핵심…~~!!


!번호


이렇게 하면 히스토리 명령을 실행할 수 있다는점~~!!



0 0

1 2 3 4 5 6 7
블로그 이미지

I believe in risen.

얄리얄리얄리