본문 바로가기

build

(10)
PIGZ 2.4+ Windows 빌드 PIGZ 는 Parallel Implementation of GZip 의 약자로, https://zlib.net/pigz/ 에서 소스를 내려 받아 빌드 하거나, 많은 형태의 미리 빌드된 패키지로 내려 받을 수 있습니다만, 윈도우에서는 MSYS2 같은걸 쓰지 않는 이상 사실 사용이 어려운 경우가 많습니다. 그래서 미리 static 으로 빌드한 바이너리 두개를 올리니 필요하신 분들은 내려 받아 사용이 가능 합니다만, 이 프로그램은 GUI 같은게 없는 console 용 입니다. x86 32/64 를 따로 빌드해서 첨부하고 있으니, 자신의 시스템에 맞게 사용하시면 됩니다.
라즈베리 파이 3 에 FLTK 1.3.4-2-ts 올리기. 마법같이 싸고, 마법같이 안될거 같은게 다 되는 우리의 친구 라즈베리 파이 3 에 과연 FLTK 가 올라 갈까 ? 라는 의문이 갑자기 들어 직접 해 보았습니다. 특징은 cross compiler 를 쓴 게 아니라, 그냥 RPI3 에서 소스 받아서 빌드 했습니다. 무척이나 느리지만 Debian package 의 위대함은 apt-get 으로 모든걸 다 할 수 있도록 해 놨다는 정도 일까요? 준비물:g++ ( RPI3 터미널에서 sudo apt-get install g++ 로 설치 )automakeFLTK-1.3.4-2-ts 소스코드 ( sudo apt-get install git 으로 git 설치 후 clone 하던가, zip 을 내려 받아서 사용 가능) 참고: https://github.com/ragewo..
libcurl 을 MinGW-W64 에서 빌드시 오류 해결 방법 CURL(libcurl) 7.54.1 을 MinGW-W64 와 M-SYS 를 이용한 환경에서 빌드 하려고 하면 다음 화면처럼 오류를 뿜고는 진행이 안되는 경우가 많다. 보통 ./configure 를 통해서 자동으로 설정된 상태로 진행을 하게 되는데, curl 의 경우 MinGW-W64 (또는 M-SYS 내장 MinGW 도 동일) 에서 마지막 curl.exe 를 빌드 하는 와중 cur_easy_getinfo() 함수 등으로 link 실패로 이를 진행 하지 못하는 버그가 있다. 이는 Makefile 상에서 만들어진 버그 또는 환경 버그 정도일수 있어 보이는데, 간단히 export 로 CFLAGS 에 CURL_STATICLIB 을 지정해 주면 된다. 분명 ./configure 상채로 staticlib 생성이 ..
리눅스에서 RaspberryPi 를 위한 ffmpeg 라이브러리 빌드 하기. 라즈베리파이(이하 RPI) 에서도 ffmpeg 을 쓰는데 뭔가 성능이 안나온다는 친구의 말을 듣고 일단 ffmpeg 을 RPI 개발 환경에서 빌드 할 수 있도록 간단히 꾸며 보았습니다. 단, 이 방법은 이미 다른 cross-platform 을 쓰고 있는 상태에서 빌드 하는 환경을 만들기 위해 단순히 ffmpeg 빌드를 위해 몇가지 스크립트를 추가해서 사용하는 방법을 설명 하고 있습니다. 먼저 RPI 빌드 툴을 받아야 하므로 아래처럼 했습니다. (이미 있으신 분들은 skip) 먼저 개인적으로 모든 소스를 밀어 넣는 Project 밑에 raspberrypi 디렉터리를 하나 만들었습니다. github 에서 RPI toolkit 을 clone 하여 tools 로 디렉터리가 만들어 지도록 합니다. 이로서 RPI ..
MinGW 에서 pthread 와 빌드시 time 구조체 오류 날때. MinGW 에서 빌드를 할때 특정 라이브러리를 M-Sys 를 통해 빌드 하다 보면 다음 오류를 볼 경우가 많습니다. error: redefinition of 'struct timespec' 이런 경우는 대부분 pthread 내에 다음과 같이 정의 되어 있는걸 확인 해 볼 수 있습니다. #if !defined(HAVE_STRUCT_TIMESPEC) #define HAVE_STRUCT_TIMESPEC #if !defined(_TIMESPEC_DEFINED) #define _TIMESPEC_DEFINED struct timespec { time_t tv_sec; long tv_nsec; }; #endif ⁄* _TIMESPEC_DEFINED *⁄ #endif ⁄* HAVE_STRUCT_TIMESPEC *⁄ 해..
MinGW(gcc) 에서 pthread 를 찾을 수 없을때. 회사에서 쓰던 pthread 를 집에서 동일하게 사용하기 위해 소스를 컴파일 하는 순간, pthread 를 찾을 수 없다는 컴파일러 오류 메시지를 보게 되는 경우가 생겼습니다.차이를 비교 해 보니, PC에 설치된 컴파일러 버젼이 차이가 있었습니다.(단, 이 방법은 말 그대로 Windows 에서 minGW 를 빌드 할때만 적용 됩니다.) 회사 : minGW 4.4.1집 : minGW 4.7.1 (TDM64-1) 과거를 되돌아 보니, 이전에 집에 설치한 minGW 4.5 버젼대는 FLTK 를 빌드할때 symbol 을 찾을 수 없다는 오류가 발생 하여 빌드를 할 수 없었던 것이 떠올랐습니다. 그래서 TDM package 로 내려받은 2013년2월11일 기준 최신 버젼을 유지해 본 것인데, 4.7 버젼 부터는 ..
Visual Studio 에서 import 한 프로젝트를 Code Blocks (gcc/minGW) 에서 빌드 실패 할때. 정말 많은 이유로 Visual Studio 를 싫어 하는 이유중, 그중 하나가 바로 위 이미지처럼 나오는 뭔가의 DLL 이 없어서 오류가 나는 경우 입니다. 멍청한 M$놈들이 지들이 만든 DLL 의 참조 오류가 많아지자, manifest 개념을 도입해서 DLL 특정 위치 해결 점을 어찌저찌 해 보고자 해 놓고선, 컴파일러 자체가 Visual Studio 에서 개발에서 쓰는 DLL 이 없으면 표준 WindowsAPI 로 도는 프로그램이 돌지도 못하게 해 놓은 것이죠. M$ 개발자들이 편하니, 사용자가 되는 VS 개발자가 개노가다 해야 하는 겁니다. 참으로 븅신같은 현상이 아닐수가 없죠. 분명히 프로젝트를 표준 Windows API 만을 사용하는 프로젝트로 만들어도, 저놈의 알수도 없는 DLL 참조 오류는 ..
델파이 에서 C 코드 OBJ 로 함꼐 빌드 하기. 보통 윈도우용 프로그램을 만들때 delphi 보다는 C 로 만드는 것이 더 편리하거나 , C 로 잘 만들어진 라이브러리 등이 있는 경우 이를 delphi 에서 쓰려고 하면 별도로 DLL 을 만들어야 하는 불편함이 있긴 했습니다. 그러다가 BCC32 를 통해서 볼랜드용 COMF 포맷 OBJ 를 만들어서 delphi 내에서 LINK 하여 사용할 수 있다는 것을 이곳을 통해서 알게 되었습니다. 참조한 곳에서 설명은 command line 을 통해서 빌드하는 방법 이었지만, 이는 BCC32 환경을 구축해야 하는 어려움이 있기 때문에 다목적 컴파일러 IDE 인 CodeBlocks 를 통해서 obj 를 생성하여 delphi 에 link 해 보았습니다. 먼저 제가 사용한 방법은 debug 용 obj 를 통해서 del..