리눅스 환경에서 Clang으로 간단한 C++ 코드를 빌드해 본다.

 

먼저 리눅스는 OpenSUSE 13.1 버전이고 기본으로는 Clang이 설치 되어 있지 않아서 제어판(?)에서 설치한다.

아래의 메뉴에서 설치하면 가장 최신 버전을 설치하지는 못하지만(출시 주기가 길지 않은) 리눅스에 익숙하지 않은 사람에게는 아주 쉽게 프로그램을 설치할 수 있다.

 

검색으로 'Clang'을 입력하여 선택 후 설치한다.

 

터미널에서 gedit를 실행 후 간단한 C++ 코드를 만든다.

 

C++을 빌드해야 하기 때문에 gcc 와 비슷하게 'clang++'을 사용한다.

(사용 방법이 gcc와 거의 같다고 봐도 좋을 듯 하다)

 


C++11

hello.cpp

#include <iostream>

#include <array>


int main()

{

std::array<int, 5> a;

a[0] = 5;


std::cout << a[0] << std::endl;

return 0;

}


32bit

clang++ -m32 -std=c++11 -stdlib=libc++ hello.cpp

64bit

clang++ -m64 -std=c++11 -stdlib=libc++ hello.cpp


libc++ 라이브러리를 빌드하지 않았다면 '-stdlib=libc++'를 '-stdlib=libstdc++'로 바꾸어야 한다.


make 파일 사용 예

CXX=clang++

CXXFLAGS= -Wall -std=c++11


all:hello


clean:

rm -rf hello

rm -rf *.o





신고
by 흥배 2014.01.28 08:30

리눅스에서는 기본 옵션이 아래처럼 된다.

link=static,shared threading=multi variant=release


본인은 아래와 같이 빌드했다. 

(OpenSUSE가 64비트라 그런지 기본으로 64비트로 빌드 되었다._

./bootstrap.sh

./b2 toolset=clang link=static,shared cxxflags="-std=c++11 -stdlib=libstdc++" linkflags="-stdlib=libstdc++" threading=multi


저작자 표시
신고
by 흥배 2014.01.27 08:00

Ubuntu 버전 12.04에 ruby 기본 설치 버전은 1.8

 

이것을 1.9.3 버전으로 바꾸고 싶다면

 

기존 1.8을 지운다.

 

1.9.3 버전을 설치한다.

 

버전을 확인한다

신고
by 흥배 2013.11.04 09:00

Ubuntu에 설치 및 실행

sudo apt-get install mysql-server

설치 중 root(MySQL의)의 암호를 입력(잘 기억해야 한다)

설치 확인 sudo netstat -tap | grep mysql

재 시작하기 sudo /etc/init.d/mysql restart

종료 mysql stop

시작 mysql -u root -p



외부에서 접속하기

mysql은 기본 설치한 상태에서는 외부에서 접속할 수 없다.!!!

방법 http://valley.egloos.com/viewer/?url=http://devxpert.egloos.com/1017656 참고 했음

권한 설정

prompt> mysql -u root -p

prompt> use mysql;

prompt> GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'password';

prompt> flush privileges;

*.* =>데이터베이스명.테이블명

root => 계정명

password => 계정의 패스워드

flush privileges; => 서버에 권한이 변경되었음을 알리고 즉시 반영되도록


mysql 재시작

sudo /etc/init.d/mysql restart



mysql GUI Tool

오라클에서 제공하는 Workbench 라는 괜춘한 툴이 있다.

리눅스, Mac OS, Windows를 지원한다(아마 자바 설치가 필요할 듯).

다운로드 http://dev.mysql.com/downloads/mirror.php?id=412167

사용 방법 http://blog.naver.com/doblhead/80191288595

저작자 표시
신고
by 흥배 2013.10.03 08:00

우분투 (Ubuntu) apt-get

http://zzaps.tistory.com/109 

http://blog.outsider.ne.kr/346 



윈도우7에서 Ubuntu 12.04에 원격접속

http://forum.falinux.com/zbxe/index.php?document_srl=780453&mid=lecture_tip


(12.04)Ubuntu xrdp 설치 후 빈 바탕화면만 뜰 때 해결방법 

  http://anak.kr/342


ubuntu 13.04 에서 원격데스크탑(xrdp) 설정하기

저도 설정하다가 이것저것때문에 많이 구글링 하다가 드디어 찾아서 혹시 저도 다음에 이용하고 다른분들도 사용하시라고 글 올립니다. 

저는 이상하게 ubuntu 13.04 에서 xrdp 가 설정이 안되는것이였습니다. 

원래 예전자료를 보면 .xsession 를 


gnome-session --session=ubuntu-2d 또는 

gnome-session --session=gnome-classic 로 하면 된다고 하였는데 


안되더라구요. 대신에 sudo apt-get install gnome-session-fallback  을 설치하고. 


.xsession 를 


nano ~/.xsession  하여  

gnome-session --session=gnome-fallback 로 해주면 됩니다


위의 방법으로도 해결이 안 된다면 GNOME SHELL을 설치하자

http://www.youtube.com/watch?feature=player_embedded&v=9fnaFXMt2sU 

테마는 GNOME Classic을 선택하였다.




[우분투 12.04] 기본 입력기인 ibus 한글 입력문제

http://deviantcj.tistory.com/430


리눅스_한글입력_우분투(ver 12.04)

http://blog.naver.com/gmlwns0216/90149128427



mongodb 설치 및 실행

http://blog.naver.com/benghun/40190621638



우분투(Ubuntu)에 MySQL(5.5)설치 및 실행

http://rdsong.com/449

저작자 표시
신고
by 흥배 2013.09.30 08:00

Boost 라이브러리는 home에서 아래의 디렉토리에 설치



Boost 라이브러리를 빌드하여 debug, release 각각 만든다(정적 라이브러리)

빌드 방법은 다음 http://jacking.tistory.com/1070


tesp.cpp와 Makefile을 TestCppBoost 디렉토리에 생성


소스코드


Makefile


빌드 후 실행


저작자 표시
신고
by 흥배 2013.09.04 08:00

예전에는 Windows의 개발자가 Linux에서 C++ 프로그램을 개발하는 것이 쉽지 않았다. 쉽지 않은 이유는 Visual C++과 같은 툴이 없기 때문이었다.


그러나 요즘은 이클립스나 KDevelop, MonoDevelop를 사용할 수 있어서 예전 보다 엄청 좋아졌다.


MonoDevelop를 사용하여 Boost 라이브러리의 thread 라이브러리를 사용한 C++ 프로그램을 빌드하는 방법을 간단하게 설명한다.


컴파일러는 g++을 사용하고, Boost 라이브러리는 빌드 된 상태이다.


MonoDevelop를 사용하여 C++ 프로젝트를 만든 후 아래의 코드를 코딩한다.


아래 그림의 팝업 메뉴에서 'Option'을 선택하여 프로젝트 설정을 한다.


Boost 라이브러리의 헤더 파일과 lib 파일의 디렉토리를 추가한다


사용할 lib 파일을 추가한다


Boost 라이브러리의 디렉토리는 다음과 같다


스레드를 사용하므로 옵션으로 -pthread 를 추가한다


이제 빌드하면 된다!!!


저작자 표시
신고
by 흥배 2013.08.19 08:00

리눅스 플랫폼에서 C++ 프로그래밍을 쉽게 하는 방법은 Eclipse라는 IDE를 사용하면 좋다.

그러나 VS를 사용했던 프로그래머로서는 사용해 보면 초반부터 간단한 부분에서 막혀서 스트레스를 받는데 이중 몇 가지를 기록 차원에서 간단하게 정리한다.


프로젝트 설정을 위해서는 아래의 설정 창을 열어야 한다.


C++11 사용하기

아래 처럼 -std=c++11 을 입력한다(참고로 gcc 4.8 사용)

* 참고  

Eclipse 에서 MinGW GCC 컴파일러로 C++11 사용하기

http://blog.powerumc.kr/404


외부 해더 파일 설정


외부 lib 파일 설정

여기서 주의할 점은 아래와 같이 이름이 libboost_reggex.a 라는 lib 파일을 설정에 등록할 때는 앞의 'lib'과 뒤의 '.a'를 제외하고 입력해야 한다.

*참고

eclipse에서 boost 사용하는데 에러가 난다..

http://abipictures.tistory.com/821


How to Install, Build and Use the Boost C++ libraries for development with the Eclipse IDE using the MinGW compiler on a Windows Platform 

http://theseekersquill.wordpress.com/2010/08/24/howto-boost-mingw/



std::thread 사용

아래처럼 '-pthread' 를 입력한다.

* 참고

How to make CDT/Eclipse work with C++11 threads?

http://stackoverflow.com/questions/10395936/how-to-make-cdt-eclipse-work-with-c11-threads



Eclipse는 VS와 다르게 빌드할 때 소스를 자동으로 저장하지 않는다.

그래서 코딩 후 저장하지 않고 빌드하면 빌드 실패가 발생한다.

빌드할 때 자동 저장을 하기 위해서는 아래의 옵션을 체크한다.

출처: http://stormcoding.tistory.com/6



저작자 표시
신고
by 흥배 2013.08.15 08:00

출처:http://charette.no-ip.com:81/programming/2011-12-24_GCCv47/


* 아래 글은 4.6에서 4.7로 업하는 것인데 버전에 맞게 숫자만 바꾸어주면 된다. 만약 4.6 에서 4.8로 올리고 싶으면 4.7 대신 4.8을 적는다



Summary

I had a bit of extra spare time over the 2011 holiday season, and I wanted to test out some of the new C++11 features. But I know the old GCC C++ compiler I have installed in my usual LTS Ubuntu 10.04 development environment is out-of-date, so the first thing I needed to do is upgrade my OS and GCC to something decent. Here is how I accomplished this task.

Ubuntu 12.04 (beta)

First thing was to change my operating system. From Canonical, I downloaded the latest daily live .iso file. Here is a decent place to start looking:http://cdimage.ubuntu.com/daily-live/current/precise-desktop-amd64.iso. These live-cd images are a breeze to install using VirtualBox, and within 30 minutes I had a decent development environment installed.

Installing GCC v4.6

When Ubuntu 12.04 is first installed, it defaults to GCC v4.6. And just as important, it only includes the 'C' compiler, not the 'C++' compiler:

$ which g++ gcc /usr/bin/gcc $ gcc --version gcc (Ubuntu/Linaro 4.6.2-9ubuntu1) 4.6.2

A number of development tools are referenced by the meta-package named build-essential, so I started by making sure this package is installed:

$ sudo apt-get install build-essential

This gave me the expected GCC v4.6 C++ compiler:

$ which g++ gcc /usr/bin/g++ /usr/bin/gcc $ g++ --version g++ (Ubuntu/Linaro 4.6.2-9ubuntu1) 4.6.2

Installing GCC v4.7

A quick search on Google turned up a PPA with the newer GCC v4.7, which has support for nearly all the new C++11 features. Add this PPA with the following commands:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test $ sudo apt-get update

Now take a look to see if we can find the GCC packages:

$ sudo apt-cache search "g\+\+" ... g++ - GNU C++ compiler g++-multilib - GNU C++ compiler (multilib files) g++-4.4 - GNU C++ compiler g++-4.4-multilib - GNU C++ compiler (multilib files) g++-4.5 - The GNU C++ compiler g++-4.5-multilib - The GNU C++ compiler (multilib files) g++-4.6 - GNU C++ compiler g++-4.6-multilib - GNU C++ compiler (multilib files) g++-4.7 - GNU C++ compiler g++-4.7-multilib - GNU C++ compiler (multilib files) ...
More information on the multilib packages can be found here, though most people shouldn't need it.

Install the GCC v4.7 C/C++ compilers with the following command:

$ sudo apt-get install gcc-4.7 g++-4.7

Switching compilers

Installing the v4.7 compilers does not remove the previous v4.6 compiler. This is very important, if you skipped the previous sentence, now is a good time to go back and re-read it! The system now has 2 'C' compilers and 2 'C++' compilers:

$ which g++ /usr/bin/g++ $ ls -lh /usr/bin/g++ lrwxrwxrwx 1 root root 7 Dec 12 17:04 /usr/bin/g++ -> g++-4.6 $ ls -lh /usr/bin/g++* lrwxrwxrwx 1 root root 7 Dec 12 17:04 /usr/bin/g++ -> g++-4.6 -rwxr-xr-x 1 root root 349K Dec 17 04:17 /usr/bin/g++-4.6 -rwxr-xr-x 1 root root 566K Dec 22 02:37 /usr/bin/g++-4.7

Luckily, there is a very simple and standard method for switching between applications that provide identical (or near-identical) functionality: update-alternatives. If you've never had to use this before, go ahead and run man update-alternatives.

We need to let update-alternatives know we have 2 C/C++ compilers, create a record for each one, and then configure which one we want to use. This is done with the following:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 sudo update-alternatives --config gcc
Note the use of "slave". This ensures when we change the configuration for gcc, that we automatically update the configuration for g++. This is important so the compilers aren't out-of-sync.

From this point forward, the only thing required when switching compilers is this (relatively) simple command:

sudo update-alternatives --config gcc

Calling the C++ compiler with --version confirms the right version is correctly installed:

$ g++ --version g++ (Ubuntu/Linaro 4.7-20111222-0ubuntu1) 4.7.0 20111222 (experimental) [trunk revision 182617]

Testing compilers

The only thing left is to test if the new v4.7 compiler is working as expected. There are several convenient pages on the GNU GCC web site which lists which features of C++11 are supported in each version of the compiler:

Comparing the v4.6 and v4.7 page, one easy-to-test feature where support was first added in v4.7 is delegating constructors. So I wrote up a quick test, which I used to confirm the difference between the two compilers:

$ sudo update-alternatives --config gcc # select the old v4.6 compiler $ g++ -std=c++0x 2011-12-24_GCCv47.cpp 2011-12-24_GCCv47.cpp: In constructor ‘A::A()’: 2011-12-24_GCCv47.cpp:36:2: error: type ‘A’ is not a direct base of ‘A’ $ sudo update-alternatives --config gcc # select the new v4.7 compiler $ g++ -std=c++11 2011-12-24_GCCv47.cpp $ ./a.out a.value == 3


저작자 표시
신고
by 흥배 2013.06.20 09:20

http://warmz.tistory.com/904 Mac에서 빌드 방법을 참고 했습니다.

 

제가 사용한 linux OpenSUSE 12.3 64Bit, Boost 라이브러리 1.53 버전입니다.

 

1. Boost 라이브러리 다운로드 후 압축 풀기

 

2. 터미널에서 압축을 푼 디렉토리로 이동 후 아래처럼 입력

$ ./bootstrap.sh

 

3. 생성된 b2를 사용하여 Boost 라이브러리 빌드하기

$ ./b2 toolset=gcc link=static threading=multi address-model=64

 

빌드가 끝나면 Boost 라이브러리 디렉토리 안의 stage/lib 디렉토리에 빌드 릴리즈용 lib 파일 생성.


./b2 toolset=gcc link=static threading=multi address-model=64 variant=debug
./b2 toolset=gcc link=static threading=multi address-model=64 variant=release



 


 

b2의 옵션 설명

출처: https://sites.google.com/site/boostjp/howtobuild

 

toolset

하나의 머신에 서로 다른 종류의 컴파일러가 인스톨 되어 있는 경우는 toolset 명령어로 지정할 수 있다. 예를 들면:

borland  : Borland사의 컴파일러

dmc          : Digital Mars사의 컴파일러

darwin    : Apple에서 손을 댄 gcc 컴파일러(Mac OS)

gcc            : GNU 프로젝트에 의한 컴파일러

intel         : Intel사 컴파이럴

msvc         : Microsoft사 컴파일러

로 지정할 수 있다. msvc-9.0 (Visual C++ 2008), msvc-10.0 (Visual C++ 2010)와 같이 버전 지정도 할 수 있다.

 

link

이것은 static, shared 라이브러리를 만들지를 지정하는 명령어

link=static,shared

와 같이 사용한다.

lib, dll (Windows)

a, dylib (Mac OSX)

a, so (Other Systems)

와 같은 라이브러리 파일을 생성한다.

 

threading

multi: 멀티 스레드 라이브러리 생성

single: 싱글 스레드 라이브러리 생성.

 

variant

debug: 디버그 빌드를 생성

release: 릴리즈 빌드를 생성

 

 

 

 

아래의 글도 아주 좋습니다

(한글)Install boost library for Linux

http://gilgil.net/?document_srl=7273


LLVM

./b2 toolset=clang linkflags="-stdlib=libc++" cxxflags="-std=c++11 -stdlib=libc++"



boost 1.54.0 library 설치

http://pururoong.tistory.com/36

저작자 표시
신고
by 흥배 2013.06.10 08:00
| 1 |

티스토리 툴바