C11 & Windows 10.

2

Nie wiem co jest większym rakiem, cmake czy win 10 ale próbowałem wszystkiego i jeszcze więcej i nic nie działa w pełni poprawnie z C11, natomiast z linuxa nie mam dostępu do płików nagłówkowych windy których co chwila potrzebuje ostatnio.

-Próbowałem użyć bibliotek z vcpkg i wtrynić je do Clion, daremne, szkoda nawet strzępić ryja.
-Próbowałem msys2 i mingw jako toolchain w Clion, daremne - mogę coś zaincludować ale nie mogę tego użyć, hm zajebiście, dodawanie od groma czarów do cmake w żaden sposób nie pomoglo, find_package nie działa, target_link_libraries nie dziala, nic %^#$ nie działa z tym zasranym cmake..
-Próbowałem nawet pisać w VS19 w cpp importując same zgodne rzeczy z C11, to też się nie mogło udać.
-Jedyne co mogę tutaj robić to pisać w notatniku a potem ręcznie kompilować z gcc msys2, ale to pochłania tony czasu zwłaszcza przy debugowaniu.

Na linuchu wystarcza człowiekowii vim albo spacemacs z linterem i debuggerem czyli nie więcej niż 100mb i moge sprawnie działać, tutaj na win10 mam zainstalowane ze 30gb cholernych bibliotek i niepotrzebnych mi gówien z VS, do tego mingw, mingw32 i mingw64 z msys2, cmake oficjalny i cmake z jetbrainsa, ch wie co jeszcze i $%^&@ &*@ nie mogę nawet odpalić swojego programu w żadnym wspierającym go IDE. Czy windows to zawsze była taka padaka czy ja jestem po prostu jednak upośledzony jakiś?

2

Może zacząłbyś od napisania jakich kompilatorów próbowałeś i jakie były komunikaty błędów, w jakim kodzie??

0
elwis napisał(a):

Może zacząłbyś od napisania jakich kompilatorów próbowałeś i jakie były komunikaty błędów, w jakim kodzie??

Napisałem jakich kompilatorów próbowałem. Kodami błędów to mogę Cie zasypywać przez tydzień.
Najszybciej będzie chyba w bardziej minimalistyczny sposób, np jest taki przykładowy kod :

#define LIBSSH_STATIC 1
#include <libssh/libssh.h>
#include <stdio.h>

int main() {
    ssh_session MySSH = ssh_new();
    if (MySSH == NULL) exit(-1);
    ssh_free(MySSH);
}

I wyjaśnij mi, co ja mam zrobić żeby odpalić go na Win w jakimś IDE działającym ze standardem C11.
Mam MSYS2 z mingw64 i mam mingw-w64-x86_64-toolchain zainstalowany i Cliona skonfigurowanego do korzystania z niego, ale wysypuje mi błędy przy powyższym kodzie typu :

undefined reference to `ssh_new'

Mam chyba już każdy dostępny kompilator na swoim pc, więc jak nie znasz msys2 i clion ale jest jakiś sposób żeby to działało z VS to też może być.

1

Install Gentoo

0

Nie wiem jak w Clionie, ale w MSYS2 to (generator MSYS Makefiles):

cmake_minimum_required(VERSION 3.2)

project(test-ssh)
set (CMAKE_C_STANDARD 11)

add_executable(test-ssh test.c)
target_link_libraries (test-ssh "ssh")

kompiluje twój przykład bez problemu.

0
0x666 napisał(a):

Nie wiem jak w Clionie, ale w MSYS2 to (generator MSYS Makefiles):

cmake_minimum_required(VERSION 3.2)

project(test-ssh)
set (CMAKE_C_STANDARD 11)

add_executable(test-ssh test.c)
target_link_libraries (test-ssh "ssh")

kompiluje twój przykład bez problemu.

Cześć! No tak, nawet dodałem mingw64 z msys2 do path, więc z terminala polecenie "gcc" mi też skompiluje wszystko, problem jest taki żadnego IDE nie mogę z tym skonfigurować, a moje C to dopiero raczkuje zwłaszcza na windowsie i potrzebuje normalnego IDE do nauki i pisania kodu. Z czego Ty korzystasz do pracy z C11?

0

Tak patrzę w internetach i wygląda, że podpięcie CLiona do MSYS2 jest dosyć proste. Ważne, żeby środowisko korzystało z cmake'a zainstalowanego pacmanem w MSYS2.

0

No to pewnie patrzyłeś na coś co ja krok po kroku zrobiłem jeśli to z google. Błąd który miałem już przy wskazaniu CLionowi cmake z msys2 to jakieś "CMake Error: Could not create named generator MinGW Makefiles", żadnej przyczyny ani nic, masło maślane jakieś i trop się urywa w googlach na czymś 5 lat nieaktualnym. Swoją drogą outputy błędów tych wynalazków typu cmake to są ze 200 lat za technologią rebubliki kongo, entry level #%^& księżyc.

0

Z ciekawości sprawdziłem, jak ta sprawa z CLionem wygląda. Zainstalowałem go, stworzyłem nowy projekt C11, wkleiłem twój kod, dodałem bibliotekę komendą target_link_libraries i skompilowałem. Wszystko poszło bez najmniejszych problemów ;)

Coś tam chyba napaprałeś w swoim komputerze, że Ci nie działa.

1

To z całą pewnością działa bez pudła. Być może tylko nowsze pakiety są już dostępne.

Instrukcja instalacji MinGW-w64 w systemie MS Windows

  1. Zainstaluj w standardowy sposób Java JDK w wersji 64-bit. Po przejściu przez proces instalacji,
    wykonaj restart systemu.

  2. Zainstaluj pakiet msys2: http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe

  3. Po instalacji uruchomi się on w konsoli. Wykonaj polecenie uaktualnienia środowiska:

    pacman -Suy

    Po zakończeniu uaktualnienia, w okienku konsoli pojawi się prośba o jego zamknięcie. Zamknij okienko.

    Uruchom MSYS2 MinGW 64-bit wybierając je z menu start (wybierz precyzyjnie: MSYS2 MinGW 64-bit a nie żaden inny) i zainstaluj narzędzia programistyczne:

    pacman -S base-devel

    pacman -S mingw-w64-x86_64-toolchain

    Pytanie o (domyślnie=wszystkie) potwierdź enterem.

    Możesz sprawdzić obecność kompilatora przez:

    gcc -v

    Zamknij okienko.

  4. Do ścieżki PATH systemu dodaj następujące wpisy. Do tych ustawień dostaniesz się poprzez:

    Eksplorator->prawy klawisz na "Ten komputer" -> Właściwości -> Zaawansowane ustawienia systemu

    -> Zmienne środowiskowe. Wybierz Path i Edytuj. Dodaj wpisy:

    C:\msys64\mingw64\bin
    C:\msys64\usr\bin

    Z pomocą klawisza "Przenieś w górę", umieść je na samej górze wpisów.

  5. Zainstaluj eclipse dla programowania w C/C++ w wersji 64-bit poprzez jego rozpakowanie w wybranym folderze. Uruchom eclipse.

  6. W konfiguracji eclipse: Window -> Preferences -> C/C++ -> Build -> Environment

    Dodaj zmienne:

    MINGW_HOME=C:\msys64\mingw64
    MSYS_HOME=C:\msys64
    PATH=${MSYS_HOME}\usr\bin;${MINGW_HOME}\bin

0

Zrobiłem dokładnie wszystko co kolega wyżej pisał, ale jeszcze mam jakiś błąd. Z tego co widzę muszę przekazać parametr "-lssh" do gcc bo on sam tego nie zlinkuje, to normalne?

0x666, cholera, możesz wrzucić jak wyglądało Twoje cmakelists?

0
cmake_minimum_required(VERSION 3.14)
project(untitled C)

set(CMAKE_C_STANDARD 11)

add_executable(untitled main.c)
target_link_libraries (untitled "ssh")

Wygląda to podobnie do tego, co sam napisałem wcześniej.

0

Kurde faktycznie dokładnie to samo, wybacz. To ja też i źle to linkowałem, podawałem ścieżkę do folderu z plikiem nagłówkowym tak jak jakiś gość w tutorialu tylko że u niego to działało, hm.
No i w końcu udało mi się odpalić ten kod nawet w CLionie, trochę to jest pokrętne bo używam ichszego cmake ( tamten MSYS2owy nie chce przyjąć parametru "-G Unix - makefiles" ciągle pitoli o Codeblocksach jakichś. ) i nie jestem już pewien czy on bierze libssh z vcpkg czy z MSYS2, może można to jakoś sprawdzić? No ale ogólnie jest ok, jakby cokolwiek nie działało z CLion to mam Eclipse'a więc dzięki wielkie za pomoc!

1

To ja też i źle to linkowałem, podawałem ścieżkę do folderu z plikiem nagłówkowym tak jak jakiś gość w tutorialu tylko że u niego to działało, hm.

Tak to musiałbyś robić, gdybyś nie korzystał z MSYS2, albo biblioteka byłaby w innym niż typowe dla tego środowiska miejscu.

tamten MSYS2owy nie chce przyjąć parametru "-G Unix - makefiles"

Może dlatego, że nie ma takiego generatora. Jest "Unix Makefiles" (trzeba zwracać uwagę na wielkość liter).

(...) może można to jakoś sprawdzić?

Jeśli kompilujesz w MinGW, to zapewne jest to biblioteka z MSYS2.

1 użytkowników online, w tym zalogowanych: 0, gości: 1