최신목록

레이블이 환경설치(WINDOWS)인 게시물을 표시합니다. 모든 게시물 표시
레이블이 환경설치(WINDOWS)인 게시물을 표시합니다. 모든 게시물 표시

2019년 8월 16일 금요일

[VS]visual studio spectre 설정 끄기


어쩌다 보니 c/c++ -> 코드 생성 -> 스펙터 완화 기능이 사용으로 프로젝트가 생성되게 환경이 구축됨.
-msvc 라이브러리를 vctoolsinstalldir\lib에서 찾지않고 vctoolsintalldir\lib\spectre\에서 찾음.
-> 기본적인 라이브러리들이 빠져있어서 링크에러남.



해결방법
-프로젝트마다 스펙터 완화 기능을 끄거나 솔루션 폴더 또는 프로젝트 루트 폴더에 Directory.Build.props 파일을 하나 만들고 스펙터 관련 설정값을 넣어줌.
<Project>
  <PropertyGroup Label="Configuration">
    <SpectreMitigation>false</SpectreMitigation>
  </PropertyGroup>
</Project>

2019년 1월 24일 목요일

raspberry pi 3 windows 10 설치

arm64 버전 win10 개발을 하던중 예전에 사뒀던 raspberry pi 3 b 모델에 win 10을 올려보기로했다. 

라즈베리 파이 사이트에 워낙 설명이 잘 되있어고 동영상 자료도 있어서 쉽게 따라할 수 있었다.

라즈베리 파이 사이트 자료
https://raspiproject.altervista.org/windows-10-on-raspberry-pi-3/

동영상 자료
https://www.youtube.com/watch?v=c0VqVm8X_zQ

라즈베리 파이에 uup를 iso로 만드는것도 쉽게 cmd파일만 실행시키면 되고 
qemu 이미지 만들때 uup로 iso 이미지 만들어놓고도 신뢰가 가지 않아서 ㅋ
설치가 안되는데 이미지 문제인건지..고생을 좀 해서 한번에 만들어지니 좋아라하다가...

sd 카드때문에 삽질을 좀 해서 언급한다.
sd 카드에 파티션 만들고 드라이버 레터 정하는데 windows에서는 removable은 처음 파티션만 인식하다고...경고가 뜨고 분위기 이상한데...안되는건가...

여기저기 구글링 해보니 32bit windows에서 장치 드라이브를 인식할수 있게 변경해서 사용하면 된다고 해서 windows 7 32bit vm 만들고(vmware에서 만듬, hyper-v는 usb redirection안됨) sd 카드에 파티션 만들었다. 잘된다. 좋다...

이제 다시 dism으로 apply-image 하려는데 헉...dism이 windows 7에서는 버전이 낮아서
apply-image mount-image 이런 option이 없다는...ㅠ

windows 10에서는 sd 파티션이 인식 못하고 7에서는 dism이 안되고 어쩌라는건지...
windows 7에 win10 sdk설치하고 거기 dism 쓰라는데 언제 설치하고 언제 쓸지...ㅡㅡ;
대충 내 PC 에 설치된 dism 카피해놓고 꼼수로 할라니 로그에 wim provider 에러 쭉...ㅋㅋ

다시 라즈베리 파이 에서 올려준 영상을 자세히 봤다 도대체 어떤 OS에서 한건지...
음..아무리봐도 windows 10 인데... 음..그럼 내 windows 10이 버전이 낮아서...ㅡㅡ

windows 10 1809 버전 vm 이 마침 있어서 봤더니 sd 카드 파티션이 두개로 인식된다.
ㅎㅎ 아...os 포맷하고 다시 설치해야겠다 최신걸로~~ 

올만에 삽질~



2018년 9월 28일 금요일

[FFMPEG]ffmpeg build with openh264

이전글에서 언급했던 x264 포함 빌드해서 제품에 적용하려고 했더니 라이선스문제가 발생했다. x264 포함빌드시 --enable-gpl 이 옵션이 ffmpeg을 lgpl에서 gpl 라이선스로 변경하는것이었다. 동영상 되는것만 생각하다가 적용을 못할 상황에... 라이선스 문제안되는 h264 라이브러리를 찾다보니 openh264라는 라이브러리가 있었다. lgpl로 그냥 사용하면 된다한다. 다시 빌드해 보았다.

x264 때와 비슷하다.

1. MSYS2 설치(x86_64)
http://www.msys2.org/

2. YASM 설치
http://yasm.tortall.net/Download.html

win64.exe 를 C:\msys64\usr\bin 폴더에 다운받고 yasm.exe라고 이름을 변경한다.

3. ffmpeg 다운로드
https://www.ffmpeg.org/download.html

4. openh264 다운로드
https://github.com/cisco/openh264

5. vs2015 x64 native tools command prompt 실행(msvc 환경)후 mingw 환경 실행함

>cd c:\msys64
>msys2_shell.cmd -mingw64 -full-path =>64bit build

*x86 빌드시 vs2015 x86 native tools command prompt 실행(msvc 환경)후 mingw 환경 실행함

6. mingw 환경에서 openh264 폴더로 이동해서 빌드함(OS 대문자로)
$make OS=msvc PREFIX=xxxxxx install

*x86 빌드시
$make OS=msvc PREFIX=xxxxxx clean => 위 빌드 내용이 남아있어서 다른옵션 빌드 안될때 사용
$make ARCH=x86 OS=msvc PREFIX=xxxxxx install

*x64 와 x86 dll 구분 => dll 파일 열어보면 PE 다음에 L이 있으면 x86 d? 가 있으면 x64

아래 폴더및 라이브러리가 생김

--bin
--include
--lib
    |--openh264.lib

7. 위 결과물을 ffmpeg 폴더 아래 openh264로 저장한다.

8. ffmpeg 폴더로 이동해서 빌드한다.
$export PKG_CONFIG_PATH=./openh264/lib/pkgconfig
$./configure --enable-shared --enable-libopenh264 --extra-cflags='-I./openh264/include' --extra-ldflags='-L./openh264/lib' --prefix=${PWD}/ffmpeg_build --toolchain=msvc
$make
$make install

이제 x264가 아닌 openh264가 잘 로드되 있는지 확인해보자.

>ffmpeg -codecs | findstr 264



h264 관련 encoder가 libopenh264로 잘 로드되있다 ~

동영상 생성시 용량은 x264보다 크고 느낌인지 화질도 좀...떨어지는거 같고...ㅎ x264가 좋긴한데...lgpl로 쓸수 있다는 장점이 h264가 특허료가 있긴한데 많이 사용할거 아니니 일단은 만족~

2018년 8월 24일 금요일

[FFMEPG] ffmpeg build with x264 (windows 10)

윈도우 개발자로 살면서 mingw 환경에서의 컴파일이 무척 혼란스러웠어서 정리를 해본다.
윈도우면 c 컴파일은 무조건 msvc로 해야한다는 편견에서 빠져나오는데 시간이 좀 걸렸다. ffmpeg이 msvc로 컴파일 가이드를 제공해서 더욱...혼란스러웠다.

실패 후기....
처음에 --toolchain=msvc로 주고 빌드를 완료하였다.

> ffmpeg_g.exe -framerate 1 -f image2 -i test%02d.bmp test.avi








동영상하나를 만들었더니 기본 코덱이 FMP4로 잡힌다.

FMP4가 먼지는 정확히 모르겠지만 원하던건 H.264이므로 다시 시도한다.

>ffmpeg_g.exe -framerate 1 -f image2 -i test%02d.bmp -c:v libx264 test.avi







libx264 encoder가 ffmpeg에는 없다.......음...그렇구나...

다시 x264를 다운받고 빌드를 하는데 msvc 빌드를 지원하지 않고(?) ㅠㅠ gcc로 빌드했다.
아......mingw 환경에서는 gcc로 빌드해서 리눅스용 윈도우용 바이너리가 다 나온다... 신기하다..

      



빌드 후 생긴 결과물들 .a 파일과 .exe파일이 다 나왔다 ㅋㅋ 아직도 혼란스럽다...
그래서 굳이 ffmpeg도 msvc로 빌드하지 않기로했다.
vs2015 native tool 실행하지 않고 --toolchain=msvc 옵션도 제거했다. --enable-libx264는 추가했다.

./configure --enable-shared --enable-gpl --enable-libx264 --extra-cflags='-I./x264/ffmpeg_build/include' --extra-ldflags='-L./x264/ffmpeg_build/lib' --bindir="./x264/ffmpeg_build/bin"

그랬더니 빌드는 잘되는데 ffmpeg.exe 실행하면 libiconv, liblzma, libwinpthread 등등 이상한 라이브러리를 찾는다. --disable-iconv, --disable lzma 등 다 disable이 되는데 libwinpthread는 disable-pthread, disable-win32thread 등 아무리해도 dependency 제거가 되지 않는다. ㅠ

결국 x264 와 ffmpeg 둘다 msvc 환경에서 빌드해서 성공했다.

잡담은 그만하고 이제부터 빌드방법을 정리해보겠다.(빌드환경은 64비트 기준으로 진행하였음)

1. MSYS2 설치(x86_64)
http://www.msys2.org/

2. YASM 설치
http://yasm.tortall.net/Download.html

win64.exe 를 C:\msys64\usr\bin 폴더에 다운받고 yasm.exe라고 이름을 변경한다.

3. ffmpeg 다운로드
https://www.ffmpeg.org/download.html

4. x264 다운로드
https://www.videolan.org/developers/x264.html
ffmpeg 소스 폴더 안에 압축풀어 놓음

5. VS2015 x64 Native Tools Command Prompt 실행(msvc 시 필요한 환경 셋팅됨) 후 mingw 환경 실행함.

>cd c:\msys64
>msys2_shell.cmd -mingw64 -full-path

6. mingw 환경에서 ffmpeg/x264 폴더로 이동해서 x264 빌드함
$CC=cl ./configure --enable-static --prefix=${PWD}/build
$make
$make install




7. ffmpeg 폴더로 이동해서 ffmpeg 빌드함
$./configure --enable-shared --enable-gpl --enable-libx264 --extra-cflags='-I./x264/build/include' --extra-ldflags='-L./x264/build/lib' --prefix=${PWD}/ffmpeg_build --toolchain=msvc
$make
$make install


빌드 성공하고

>ffmpeg -framerate 1 -f image2 -i test %02d.bmp -c:v libx264 -preset veryslow -qp 18 -pix_fmt yuv420p test_264.avi

avi 잘 만들어진다.

msvc로 빌드하면 pdb 파일이 생겨서 좋네요.
pdb 파일이 prefix 경로에 쌓이지 않아 configure 파일을 좀 수정했습니다.

mingw32*|mingw64*)
.....
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.pdb)'
...
win32|win64)
...
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.pdb)'
...

두개 추가해줬더니 bindir에 잘 모여있네요~

2018년 1월 22일 월요일

[IIS] worker process (w3wp.exe) 늘리기

프로세스 모니터링 드라이버를 테스트 중에 IIS worker process인 w3wp.exe가 한꺼번에 종료되면서 driver에 crash가 났다. 같은 상황을 재현하기 위해 서버에 IIS 를 설정해서 jmeter로 http request를 100개를 붙여봐도 서버에서 w3wp.exe는 스레드풀을 만들어 혼자 다 처리하고 있다. 음 고객사에서는 w3wp.exe가 엄청 여러개 뜨는 상황이었는데 사이트를 여러개 서비스 하고 있던 웹서버이거나 아니면 워커 프로세스를 여러개 띄울수 있는 옵션이 있거나... 그래서 찾아보았다.


희망이 보이네요 저런 메뉴가 있네요...
근데 들어가보면 응용 프로그램 풀만 있고 속성 메뉴가 없네요 ㅠ


음...근데 확실한건 worker process가 응용프로그램 풀과 관련이 있다는거 ㅋ

근데 아래 보니 응용 프로그램 풀이라는 서브 메뉴가 있네요
응용프로그램 풀 리스트에서 풀 하나를 잡고 고급 설정으로 들어가면 원하는 화면이 나오네요.


최대 작업자 프로세스 수 기본 1인걸 100개로 늘렸습니다.
이제 jmeter로 붙어볼까요?


하나만 뜨던 w3wp.exe가 여러개 뜨네요~

2018년 1월 17일 수요일

[powershell] remote 접속 방법

windows 2016에서는 telnet 서버가 안 들어있다. msdn에서는 powershell 사용을 권장하고 있다. powershell 과 친해져야겠다.

일단 remote에서 powershell을 이용해서 접속해보자.

SERVER, CLIENT 모두 TRUSTEDHOSTS로 서로 등록이 되야 접속이 가능하다.

[SERVER]
1. Winrm 서비스가 동작해야함. 아래 명령어를 통해 방화벽 및 서비스등을 자동으로 설정할 수 있다.
   -  winrm quickconfig
2. trustedhosts에 client ip 등록
   - 확인 : Get-Item WSMan:\localhost\Client\TrustedHosts
   - 등록 : Winrm s winrm/config/client '@{TrustedHosts="*"}'
             Winrm s winrm/config/client '@{TrustedHosts="[client ip]"}'

[CLIENT]
1. trustedhosts에 server ip 등록
   - 확인 : Get-Item WSMan:\localhost\Client\TrustedHosts
   - 등록 : Winrm s winrm/config/client '@{TrustedHosts="*"}'
             Winrm s winrm/config/client '@{TrustedHosts="[client ip]"}'


====================================================
양쪽다 설정이 끝났다면 아래 커맨드를 이용해서 세션연결을 시도한다.
> Enter-PSSession -ComputerName [SERVER IP] -Credential [사용자]


1회성으로 스크립트만 한번 실행할 수 있다.
> Invoke-Command -ComputerName [SERVER IP] -ScriptBlock {COMMAND} -Credential [사용자]


dir 명령어를 리모트로 실행시킨 모습이다.

2016년 11월 10일 목요일

[vmware]bridged network 설정

bridged network을 설정하기 위해서
먼저 vmware의 Virtual Network Editor에 Bridged type의 VMNet0를 만들어줘야함.


Virtual Network Editor 를 열어보면 default로는 Bridged type이 없다.
아래의 Change Settings를 클릭하여 다시 열면 Bridged가 생긴다.



*****간혹 adapter가 없다고 안생길때가 있다.
그러면 이더넷 속성에서 설치->서비스->추가->Vmware Bridge Protocol 을 설치해주어야 한다.


2016년 8월 12일 금요일

[WINDDK] INCLUDE 폴더 와 LIBRARY 폴더

visual studio에서 minifilter driver를 개발하고 있었다. 
환경셋팅은 vs에 vc++ 디렉터리에 ddk inc 폴더들을 추가해서 사용하고 있었으므로 당연히 ddk build시 vs 에서 셋팅한 inc 패스를 사용하고 있으리라 생각했다....ㅜ

너무나 뭐든 당연하게 생각하고 넘겨버림이....개발 마지막 단계에서 incude 폴더와 library 폴더의 혼란으로 삽질을......

ddkbuild.cmd를 사용하고 있었으므로 내부적으로 경로를 잘 찾겠거니..ㅠ

어느날...
드라이버개발과 c++ 개발을 같이 하고 있던 나는 sid로 사용자계정을 얻을 일이 생겨서 SecLookupAccountSid 함수를 사용하게 되었다. ddk의 header와 library를 추가할 일이 생겼다. 당연히 아래와 같은 코드를 추가하였다.

당시 vc++ 디렉토리에는 inc\ddk만이 추가되어 있었다.

#include <ntfis.h>
#pragma comment(lib, "ksecdd.lib")

함수를 찾을수 없다한다. include 폴더를 추가해 주지 않았다고 생각한 나는
vc++ 디렉터리로 가서 inc\api 폴더를 추가한다. 
unresolved....어쩌고 저쩌고..음..저건 library import 안되면 나는건데...
난 당연히 위와 같이 해줬으므로 계속 헤더만을 찾아주고 있었다. 마침 함수를 잡고 정의로 이동하면 찾을수 없다는 메시지도 나오고....ㅎ

너무 ntfis.h에 뻔히 있는 함수를 못찾아서 vc++ 디렉토리에서 inc\ddk와 inc\api를 둘다 빼보았다. 컴파일시 vc++ 디렉토리 셋팅에 의존하고 있으면 많은 에러가 쏟아져야할 타이밍이었다. 어라....아까와 똑같이 seclookupaccountsid만 못찾는단다. 다른 함수는 다 잘 찾는다. 엥????? 뭐지 지금까지 나는 왜 여기다 계속 셋팅해서 쓰고 있던거지?? 다들 거기다 셋팅하라고 하던데...음...기존 다른 ddk 함수를 붙잡고 정의로 이동을 해보았다. 헉...찾지 못한다. vc++ 디렉터리에 정의함은 단지 visual studio에서 심볼을 찾아가기 위함이었다. 빌드와는 상관이 없는...

그럼 빌드와 상관있는 include 폴더는 어디있단 말인가...
그러다가 문득.. 아... library 정의를 저렇게 하는게 아니고 sources에서 한다는게 생각이 나서 sources에 가서 추가하였다. 음..바로 빌드가 잘된다.
include 폴더는 어디에도 추가하지 않은 상태...sources에서도 뺐다.

그럼 default include 폴더가 어딘가에 정의되있다는것
환경설정밖에 없는데
나는 미련하게 cmd 시스템 환경변수만 쳐다보고 암것도 없다고 생각하고..ㅠㅠ
삽질을...

결론은 ddk build 환경인 x64 checked build environment 콘솔창이 뜨면서 환경변수가 셋팅되고있었다는... 내가 찾던 온갖 변수들이 거기 다 모여있었다. 
IFSKIT_LIB_PATH 와 INCLUDES 등등
make시 DDK폴더 bin안에 있는 make.new를 이용하여 셋팅을 하는듯 했다 비슷한 셋팅들이 해당 파일에 존재하였다. 


음...vc++ 디렉터리 include 와 헷갈리지 말자~!! 결국 sources 에서 INCLUDES를 잘 정의해주면 적용이 될것이다. 난 ddk와 api둘만을 쓰기에 sources에 아무것도 적지 않아도 잘 돌아갔다는것~!!

2016년 8월 4일 목요일

[grub rescue]windows 10 redstone 설치 중 grub rescue 만났을때

윈도우 10과 칼리 리눅스를 설치하여 듀얼부팅하여 사용중이었다.
레드스톤이 업데이트 된다는 소식을 듣고..ㅠ
과감히 업데이트를 시작하였다.
칼리 리눅스를 설치하고 났을때 MBR에 부트로더 가 칼리 부트로더가 잡혀서
재부팅시 자꾸 칼리 부트로더 화면이 뜨고 있었는데
레드스톤 업데이트 하면서 재부팅을 시도하더니 재시작시 윈도우즈 부트로더로 안넘어가서 그런지 업데이트가 제대로 안되는 상황이었다. ㅠ
짜증나서 EasyBSD를 이용해서 칼리리눅스 부트를 잠시 없애놓았다 나중에 다시 만들어야지 하고...그래서 레드스톤 업데이트를 진행하니 잘되었다. 아니 잘되는듯 하였다. 그런데 몇번 재부팅을 하더니............

grub rescue >

하고는 윈도우즈도....칼리도 모두 못찾는것이 아닌가...ㅠㅠ

이곳저곳 구글링을 해보니

grub rescue > ls
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)
grub rescue > ls (hd0,msdos1)/

이러면 파일시스템이 나온다는데
나는 unknown이라고 나왔다..ㅠ

윈도우 10 부팅 usb를 만들고 부팅하여
컴퓨터복수 > 문제해결 > 고급옵션 > 명령 프롬프트를선택

>bootrec /fixmbr
>bootrec /fixboot

후 재부팅해서 레드스톤 업그레이드 전의 윈도우10만 간신히 살렸다.
칼리쪽은 파티션이 날아간듯..ㅠ
다시 설치해야겠다....

** 후에 알았음..EasyBSD에서 Edit Boot Menu 에서 제거하고 Save Settings 만으로 부트로더가 바뀌지 않는다는것을..ㅠBCD Backup/Repair 에서 다시 부트파일 재생성을 해줘야 실제 부트로더에 적용이 되는건데...그래서 부트로더가 날아간듯 하네요...

2016년 3월 8일 화요일

[VS]단축키

알아두면 편한 단축키

<VS>
Ctrl + -(대시), Ctrl+Shift+-(대시) : 이전 커서 있던 곳으로 이동(Shift는 역순)
Ctrl + F12 : 커서내용의 선언으로 이동, 헤더파일 프로토타입으로 이동
F12 : 커서내용의 정의로 이동

<Assist X>
ALT+O : 헤더 & cpp 스위칭

2016년 2월 18일 목요일

[VisualStudio]나만의 눈에 편한 색상


개발을 오래하기 위한 눈에 편한 색을 찾았다. 어디까지나 나만의 주관적인 의견이지만 ㅎ
나름 디자인 팀의 조언을 얻어서 구한색이다 ^^. Visual Studio 테마 들로 딱히 맘에 드는게 없어서 그냥 시간을 들여 하나 장만했다. 물로 Visual assist가 필요하다. 팀 프로젝트 특성상 아직 Visual Studio 2008을 사용중이기 때문에 색상 셋팅이 쉽지 않다.

H : 색상
S : 채도
V : 명도

채도가 낮고 명도가 높을수록 내 칠판 바탕과는 조합했을 때 눈이 편해졌다.

Visual Studio 셋팅(기본에서 변경점)
바탕 : 칠판색(RGB(13, 104, 107))
전처리기 키워드 : RGB(242, 119, 242)
키워드 : RGB(143, 155, 218), HSV(154, 121, 170)
식별자 : 흰색
연산자 : 노랑

Visual Assist X 셋팅
Classes, structures and typedefs : SkyBlue
Variables : E0E0E0(연회색)
Preprocessor macros : Gold
Methods : DarkOrange


2016년 1월 15일 금요일

[process explorer]process explorer 초기화

process explorer 화면이 이상하게 아래처럼 process name 컬럼이 안보이거나 할때가 있다.



process explorer는 프로그램 정보를 레지스트리에 저장한다. 초기화 하기 위해서는 그 정보를 삭제해주면 다음 프로그램 실행시 초기화되서 셋팅된다.
  • HKCU\Software\Sysinternals 에서 Process Explorer 를 통째로 삭제한다.

===================================================
process explorer가 문제가 꾀 있네요...
쓰다보니 crash가 나서 windbg로 봐도 bugcheck정보도 없고...
아래와 같은 정보를 주고 죽네요... 저희 프로세스 모니터링하는 드라이버가 있어서 충돌하는줄 알고 깜놀했는데... 역시 위와 같이 초기화 하면 잘 뜨네요 ㅋ

문제 이벤트 이름: BEX64
  응용 프로그램 이름: procexp64.exe
  응용 프로그램 버전: 15.22.0.0
  응용 프로그램 타임스탬프: 4ff5cf90
  오류 모듈 이름: procexp64.exe
  오류 모듈 버전: 15.22.0.0
  오류 모듈 타임스탬프: 4ff5cf90
  예외 오프셋: 00000000000ca720
  예외 코드: c0000417
  예외 데이터: 0000000000000000
  OS 버전: 6.3.9600.2.0.0.272.7
  로캘 ID: 1042
  추가 정보 1: d2ca
  추가 정보 2: d2ca81637f0cd9ff029fa7b0d567211f
  추가 정보 3: 04da
  추가 정보 4: 04dacebe9954dce3dd256f56a69ca6a5

2016년 1월 14일 목요일

[설치오류]MSSQL 2012 설치시 오류

데이터베이스 엔진 시작 핸들을 찾을 수 없습니다.




해결방법
=> 설치시 데이터베이스 엔진 계정 설정하는 곳에서 NETWORK SERVICE로 계정을 변경해주니 해결됨.

참고
http://www.superpctricks.com/2014/02/sql-install-error-database-engine-recovery-handle-failed.html