eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › czemu: jeden system + różne kompilatory = problem?
Ilość wypowiedzi w tym wątku: 46

  • 1. Data: 2012-01-03 15:22:21
    Temat: czemu: jeden system + różne kompilatory = problem?
    Od: Szyk <s...@o...pl>

    Witam

    W systemie Windows można spotkać różne kompilatory C++. Np. Visual i
    GNU. Kompilują one programy w postaci exe lub dll. A zatem:

    Dlaczego programy i biblioteki skompilowane różnymi kompilatorami C++
    nie są ze sobą kompatybilne?

    Gdzie jest słaby punkt specyfikacji? Czy standard C++ jest nie
    precyzyjny? Czy może standard plików DLL jest nie precyzyjny?

    Czy są takie systemy operacyjne w których programy (i biblioteki
    współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    kompatybilne?


    dzięki i pozdro
    Szyk


  • 2. Data: 2012-01-03 15:46:41
    Temat: Re: czemu: jeden system + różne kompilatory = problem?
    Od: Wojciech Jaczewski <w...@o...pl>

    Szyk wrote:

    > Dlaczego programy i biblioteki skompilowane różnymi kompilatorami C++
    > nie są ze sobą kompatybilne?
    >
    > Gdzie jest słaby punkt specyfikacji? Czy standard C++ jest nie
    > precyzyjny? Czy może standard plików DLL jest nie precyzyjny?

    Standard C++ dotyczy kod źródłowego, natomiast nie opisuje jaką dokładnie
    postać binarki ma utworzyć kompilator.
    Bywa, że twórcy kompilatorów umówią się na takie samo ABI, ale standard tego
    nie wymaga.


  • 3. Data: 2012-01-03 15:51:41
    Temat: Re: czemu: jeden system + różne kompilatory = problem?
    Od: Paweł Kierski <n...@p...net>

    W dniu 2012-01-03 16:22, Szyk pisze:
    > Witam
    >
    > W systemie Windows można spotkać różne kompilatory C++. Np. Visual i
    > GNU. Kompilują one programy w postaci exe lub dll. A zatem:
    >
    > Dlaczego programy i biblioteki skompilowane różnymi kompilatorami C++
    > nie są ze sobą kompatybilne?

    Manglowanie nazw, zarządznie stertą.

    Oba te problemy można z resztą spotkać używając jednego kompilatora. Na
    pewno da się na to nadziać w Visualu.

    Dla manglowania nazw wystarczy eksportować, bez extern "C", funkcję:

    wchar_t widen(char c);

    i skompilować jeden moduł z opcją /Zc:wchar_t a drugi z /Zc:wchar_t-.
    W pierwszym przypadku wchar_t będzie traktowany jako typ wbudowany
    i manglowany do innej literki, niż w drugim przypadku (gdzie wchar_t
    jest traktowany jak alias na unsigned short).

    Druga kategoria problemów - namieszać z opcjami /MT i /MD (multithread
    i multithread DLL) oraz "okolicznymi" odpowiedzialnymi za rodzaj
    linkowanej biblioteki run-time. Do tego przekazywać między modułami
    obiekty std::string (lub dowolne inne wewnętrznie alokujące pamięć).

    > Gdzie jest słaby punkt specyfikacji? Czy standard C++ jest nie
    > precyzyjny? Czy może standard plików DLL jest nie precyzyjny?

    C++ nie mówi nic o postaciach binarnych. O modułach dynamicznie
    ładowanych/dzielonych też nie.

    > Czy są takie systemy operacyjne w których programy (i biblioteki
    > współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    > kompatybilne?

    Najlepiej przyjąć, że najmniejszym wspólnym mianownikiem jest interfejs
    typu C. Do tego każde zwolnienie zasobów powinno nastąpić w tym module,
    w którym zostały zaalokowane. Wtedy ma duże szansę zagrać bez względu
    na kompilator.

    --
    Paweł Kierski
    n...@p...net


  • 4. Data: 2012-01-03 16:47:11
    Temat: Re: czemu: jeden system + różne kompilatory = problem?
    Od: Adam Przybyla <a...@r...pl>

    In pl.comp.programming Szyk <s...@o...pl> wrote:
    > Witam
    >
    > W systemie Windows można spotkać różne kompilatory C++. Np. Visual i
    > GNU. Kompilują one programy w postaci exe lub dll. A zatem:
    >
    > Dlaczego programy i biblioteki skompilowane różnymi kompilatorami C++
    > nie są ze sobą kompatybilne?
    >
    > Gdzie jest słaby punkt specyfikacji? Czy standard C++ jest nie
    > precyzyjny? Czy może standard plików DLL jest nie precyzyjny?
    >
    > Czy są takie systemy operacyjne w których programy (i biblioteki
    > współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    > kompatybilne?
    ... oczywiscie, pod kazdym Linuksem. Z powazaniem
    Adam Przybyla


  • 5. Data: 2012-01-03 17:12:08
    Temat: Re: czemu: jeden system + różne kompilatory = problem?
    Od: Szyk <s...@o...pl>


    >> Czy są takie systemy operacyjne w których programy (i biblioteki
    >> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    >> kompatybilne?
    >
    > Najlepiej przyjąć, że najmniejszym wspólnym mianownikiem jest interfejs
    > typu C. Do tego każde zwolnienie zasobów powinno nastąpić w tym module,
    > w którym zostały zaalokowane. Wtedy ma duże szansę zagrać bez względu
    > na kompilator.

    Czyli wzorzec fabryka obiektów się kłania?


  • 6. Data: 2012-01-03 17:17:17
    Temat: Re: czemu: jeden system + różne kompilatory = problem?
    Od: Szyk <s...@o...pl>


    >> Czy są takie systemy operacyjne w których programy (i biblioteki
    >> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    >> kompatybilne?

    > ... oczywiscie, pod kazdym Linuksem. Z powazaniem
    > Adam Przybyla

    Czy to wynika z faktycznie lepszego rozwiązania technicznego (np.
    standard Elf jest lepiej zdefiniowany niż microsoftowy PE?)?

    Czy może wynika to z faktu, że mamy tam tylko narzędzia GNU i gdyby użyć
    jakiegokolwiek innego kompilatora, to byśmy mieli takie same jazdy jak
    pod Widnows?


  • 7. Data: 2012-01-03 17:21:00
    Temat: Re: czemu: jeden system + różne kompilatory = problem?
    Od: Roman W <b...@g...pl>

    On Tuesday, January 3, 2012 4:47:11 PM UTC, Adam Przybyla wrote:

    > ... oczywiscie, pod kazdym Linuksem.

    Nieprawda: http://gcc.gnu.org/gcc-3.2/c++-abi.html

    RW


  • 8. Data: 2012-01-03 17:23:47
    Temat: Re: czemu: jeden system + różne kompilatory = problem?
    Od: Edek <e...@g...com>

    On 01/03/2012 06:17 PM, Szyk wrote:
    >
    >>> Czy są takie systemy operacyjne w których programy (i biblioteki
    >>> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    >>> kompatybilne?
    >
    >> ... oczywiscie, pod kazdym Linuksem. Z powazaniem
    >> Adam Przybyla
    >
    > Czy to wynika z faktycznie lepszego rozwiązania technicznego (np.
    > standard Elf jest lepiej zdefiniowany niż microsoftowy PE?)?
    >
    > Czy może wynika to z faktu, że mamy tam tylko narzędzia GNU i gdyby użyć
    > jakiegokolwiek innego kompilatora, to byśmy mieli takie same jazdy jak
    > pod Widnows?

    Nie mamy tam tylko narzędzi GNU.

    Edek


  • 9. Data: 2012-01-03 17:39:18
    Temat: Re: czemu: jeden system + różne kompilatory = problem?
    Od: Wojciech Jaczewski <w...@o...pl>

    Szyk wrote:

    >
    >>> Czy są takie systemy operacyjne w których programy (i biblioteki
    >>> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    >>> kompatybilne?
    >
    >> ... oczywiscie, pod kazdym Linuksem. Z powazaniem
    >> Adam Przybyla
    >
    > Czy to wynika z faktycznie lepszego rozwiązania technicznego (np.
    > standard Elf jest lepiej zdefiniowany niż microsoftowy PE?)?

    Standard Elf nijak przed tym nie chroni. Po prostu tak się szczęśliwie
    składa, że niektóre kompilatory tworzą binarki zgodne ze sobą.
    Był taki czas - jeśli dobrze pamiętam - przejście z gcc w wersji 3.x na gcc
    w wersji 4.x, gdy nie było zgodności między bibliotekami C++ (czyste C -
    jeśli dobrze pamiętam - nie miało problemów zgodności) utworzonymi wersją
    3.x a 4.x.

    > Czy może wynika to z faktu, że mamy tam tylko narzędzia GNU i gdyby użyć
    > jakiegokolwiek innego kompilatora, to byśmy mieli takie same jazdy jak
    > pod Widnows?

    Kompilator Clang tworzy binarki zgodne z binarkami utworzonymi przez gcc
    4.x. Innych kompilatorów nie używam, ale sądzę że intelowski też robi
    zgodne.


  • 10. Data: 2012-01-03 20:06:38
    Temat: Re: czemu: jeden system + ró?ne kompilatory = problem?
    Od: A.L. <l...@a...com>

    On Tue, 3 Jan 2012 16:47:11 +0000 (UTC), Adam Przybyla
    <a...@r...pl> wrote:

    >In pl.comp.programming Szyk <s...@o...pl> wrote:
    >> Witam
    >>
    >> W systemie Windows można spotkać różne kompilatory C++. Np. Visual i
    >> GNU. Kompilują one programy w postaci exe lub dll. A zatem:
    >>
    >> Dlaczego programy i biblioteki skompilowane różnymi kompilatorami C++
    >> nie są ze sobą kompatybilne?
    >>
    >> Gdzie jest słaby punkt specyfikacji? Czy standard C++ jest nie
    >> precyzyjny? Czy może standard plików DLL jest nie precyzyjny?
    >>
    >> Czy są takie systemy operacyjne w których programy (i biblioteki
    >> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    >> kompatybilne?
    > ... oczywiscie, pod kazdym Linuksem. Z powazaniem
    > Adam Przybyla

    Echem.... Ja uzywam pewnego komercjalnego oprogramwoania. Platne, 5
    cyfrowo w dolarach. Maja 5 roznych wersji binarow na rozne Linuksy. Na
    ten sam pecet

    A.L.

strony : [ 1 ] . 2 ... 5


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: