# [SOLVED]  compilacja z palca przez make a flagi make.conf

## Andry77

Witam

Czy ktoś mi możne powiedzieć jak się mają flagi z make.conf do kompilacji programów z palca przez make.

Czy zmienne są zaciągane jeśli nie kompiluje się przez emerge czy trzeba ustawić (przez export) zmienne typu CFLAGS i CXXFLAGS w celu optymalizacji?

EDIT:

Rozwiązanie zaproponowane przez Jacekalex jest bardzo dobre i mnie zadowala - więc [SOLVED]

Dziękuję

 :Smile: Last edited by Andry77 on Thu Jul 26, 2012 7:03 am; edited 4 times in total

----------

## Garrappachc

Make.conf działa tylko via emerge. Możesz ustawić sobie flagi przy konfiguracji.

```

CXXFLAGS="-O2 -fomit-frame-pointer" ./configure

CXXFLAGS="-O2 -fomit-frame-pointer" cmake .
```

A po co Ci kompilowanie z palca? Nie ma ebuilda do czegoś? Lepiej już szybko coś skrobnąć...

----------

## Andry77

 *Garrappachc wrote:*   

> Make.conf działa tylko via emerge. Możesz ustawić sobie flagi przy konfiguracji.
> 
> ```
> 
> CXXFLAGS="-O2 -fomit-frame-pointer" ./configure
> ...

 

Mam sktypcie cos w stylu  *Quote:*   

> export CXXFLAGS="....." 

 

Czyli jednak jest to wymagane?

A co z kompilacja kernela?

Przecież kompiluje się przez make..

----------

## SlashBeast

Configure (i cale te durne autotoolsy) sprawdzaja zmienne srodowiskowe i generuja Makefile z nimi, sam make nie pobiera sobie tych zmiennych, chyba, ze mu specjalnie wpiszesz w Makefile by to robil albo podasz je przez "make CFLAGS='-Os'". Zobacz sobie kernelowy Makefile i Kbuild.

----------

## Jacekalex

Ja mam flagi kompilatora skopiowane z make.conf do /etc/bash/bashrc, i jak kompiluje z palca, to zazwyczaj zaskakuje od razu.

```
grep FLAGS /etc/bash/bashrc

CFLAGS="-march=core2 -O2 -pipe"

CPPFLAGS="-march=core2 -O2 -pipe"

CXXFLAGS="-march=core2 -O2 -pipe"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"
```

Pozdrawiam

 :Cool: 

----------

## SlashBeast

Nie wyglada bys je exportowal, w takim wypadku env['CFLAGS'] nic nie zwroci, te zmienne lokalne nie zostana przekazane do configure czy make. Nie wyglada na to, ze to w ogole dziala.

proof of concept

```
piotr@frontier ~ % foo=BAR

piotr@frontier ~ % sh -c 'echo $foo'

piotr@frontier ~ % export foo

piotr@frontier ~ % sh -c 'echo $foo'

BAR
```

----------

## Jacekalex

 *SlashBeast wrote:*   

> Nie wyglada bys je exportowal, w takim wypadku env['CFLAGS'] nic nie zwroci, te zmienne lokalne nie zostana przekazane do configure czy make. Nie wyglada na to, ze to w ogole dziala.
> 
> proof of concept
> 
> ```
> ...

 

Słuszna uwaga, poprawione:

```
grep FLAGS /etc/bash/bashrc 

export CFLAGS="-march=core2 -O2 -pipe"

export CPPFLAGS="-march=core2 -O2 -pipe"

export CXXFLAGS="-march=core2 -O2 -pipe"

export LDFLAGS="-Wl,-O1 -Wl,--as-needed" 

```

```
$ sh -c 'echo $CFLAGS' 

-march=core2 -O2 -pipe

```

Dziękuję

 :Smile: 

----------

