LINUX.ORG.RU

Универсальная кросскомпиляция под винду с сокетми бывает?

 , ,


0

1

Возникла потребность собрать openssh-сервер под проклятую: у меня на билд-сервачке налажен MXE для кросскомпиляции другого, дай думаю, скормлю ему сырцы openssh-portable.

Он ожидаемо ругается на отсутствие sys/socket.h в связи с чем – вопрос: а есть какой-то универсальный способ решить эту проблему или только руками через winsock2.h переделывать? Неужто все те сотни линуксовых программ, которые я вижу для винды, руками переделывали? Почему нельзя запилить имплементацию sys/socket.h на виндовых сокетах для кросскомпиляции вот подобной, там что-то принципиально несовместимо?

★★★★★

Неужто все те сотни линуксовых программ, которые я вижу для винды, руками переделывали?

Да. Без переделки можно только через MSYS2/Cygwin попробовать, а MXE рассчитан на сборку нативных приложений.

annulen ★★★★★
()
Ответ на: комментарий от t184256

Там сервер. Люди, которых я считаю дурами, ради того чтоб можно было использовать дотнет в лохматые времена решили делать его на винде. Я делаю клиентскую часть и у меня rsync ходит туда к ним на сервер поверх ssh-а.

Они мне так и сделали: галочку поставили и типа openssh у них появился. И типа даже работает. При том постоянно плодит сотни зомбаков, и постоянно выкидывает какую-то дичь с юзверями, особенно в местах, где есть актив директори.

Вот возникла мысль заиметь на той стороне независимый ни от винды, ни от разрабов сервера мой собственный openssh-сервак, который бы для дистрибтива сервера готовил я. Мне показалось самым простым – собрать из сырцов и положить к ним готовый – пусть запустят только, а настрою я его сам. Ну и в таком виде с ним неожиданно для меня ничего случаться не будет.

Вообще, в гитхабе openssh-portable пишут что цигвином собирается, так что я, похоже, напрасно воду мучу )

pihter ★★★★★
() автор топика

я бы посмотрел на то, как собирается эрланг. Они очень сильно упарываются по единообразности поведения под всякой редко используемой экзотикой типа Solaris 96 года или виндовсом каким-нибудь.

Но ты хочешь кросскомпиляцию, т.е. по человечески билдить из под линукса в целевую ОС, непригодную для CI процесса, или тебе собрать исходники под виндовском местными недокомпиляторами?

max_lapshin ★★★★★
()
Ответ на: комментарий от max_lapshin

Но ты хочешь кросскомпиляцию, т.е. по человечески билдить из под линукса в целевую ОС, непригодную для CI процесса, или тебе собрать исходники под виндовском местными недокомпиляторами?

Пока хоть как-нибудь. Кросскомпиляция, конечно, лучше: чтоб с виндой не возиться, но и нативная компиляция «там» – сойдет

pihter ★★★★★
() автор топика
Ответ на: комментарий от annulen

MSYS2/Cygwin

таки под цигвином собралось, а вот под МСИС-ом – нет.

А раньше я думал что МСИС – это развитие цигвина, а поди ж ты – форк, да еще и оба активны. Удивительно сколько всякого понапридумывали чтоб под винду линуксовый код тащить с удобствами ))

pihter ★★★★★
() автор топика

Он ожидаемо ругается на отсутствие sys/socket.h в связи с чем – вопрос: а есть какой-то универсальный способ решить эту проблему или только руками через winsock2.h переделывать? Неужто все те сотни линуксовых программ, которые я вижу для винды, руками переделывали? Почему нельзя запилить имплементацию sys/socket.h на виндовых сокетах для кросскомпиляции вот подобной, там что-то принципиально несовместимо?

переделывать на winsock2 не так уж и много. Буквально один include, инициализация и немного мата :-) За 3 часа (с момента публикации топика) наверное уже-бы сделал

Там сервер. Люди, которых я считаю дурами, ради того чтоб можно было использовать дотнет в лохматые времена решили делать его на винде. Я делаю клиентскую часть и у меня rsync ходит туда к ним на сервер поверх ssh-а.

то есть ради отдельной «клиентской части» вы решили собрать наколенный sshd и впендячить его заказчику в продакшен. Что-то не так в вашем колхозе. :-)

молитесь что у «дур» нет админов. Они за «rsync ходит по нештатному ssh» могут морду набить

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

переделывать на winsock2 не так уж и много. Буквально один include, инициализация и немного мата :-) За 3 часа (с момента публикации топика) наверное уже-бы сделал

Это-то понятно, я просто вопрошал про готовое решение, которое явно должно было существовать, и оно нашлось

то есть ради отдельной «клиентской части» вы решили собрать наколенный sshd и впендячить его заказчику в продакшен

почему наколенный? Чем openssh, который соберу я из сырцов, хуже openssh-а собранного майкрософтом, очевидно, из тех же сырцов?

впендячить его заказчику в продакшен

Почему в продакшн? Все в разработке

Что-то не так в вашем колхозе. :-)

Ой, а где все так? :)

Они за «rsync ходит по нештатному ssh» могут морду набить

Почему нештатный-то?

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Почему нештатный-то?

когда есть два варианта софта: A собранный, подписанный и обновляемый дистрибьютером и Б собранный васяном из неведомых сорцов. «А» называет штатным, «Б» нештатным..

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

собранный васяном из неведомых сорцов. «А» называет штатным, «Б» нештатным..

То есть я майкрософту должен доверять больше, чем себе что-ли? :)

А если я создаю дистрибудтив, считается ли софт, который я туда положу с этого момента штатным? :)

А в майкрософте, прежде чем опакетить, они этот openssh где взяли? Уж не стянули ли с гитхаба tgz-шник и не собрали как им надо?

В общем – ЯННП

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Вот возникла мысль заиметь на той стороне независимый ни от винды, ни от разрабов сервера мой собственный openssh-сервак

Если у тебя предполагается свой клиент и сервер, зачем тогда тебе именно ssh протокол? Не проще ли навелосипедить что-то более легковесное на чистых сокетах? Это максимум 2 страницы кода, которые себе чатжпт сгенерит без проблем. Если нужна безопасность то добавить SSL/TLS слой.

iron ★★★★★
()
Ответ на: комментарий от iron

Если у тебя предполагается свой клиент и сервер, зачем тогда тебе именно ssh протокол?

Да в общем-то не обязательно: задача была в синхронизации файлов по шифрованному каналу – я выбрал rsync+ssh, прекрасно работает, но мог и сам написать, да

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

задача была в синхронизации файлов по шифрованному каналу

Тогда проще всего rsync сервер + TLS. Помнится были альтернативы rsync под винду. К примеру, cwRsync.

iron ★★★★★
()
Ответ на: комментарий от token_polyak

dropbear не рассматривал? попримитивнее будет, под цыгвином робит

У меня сложилось мнение, что он память портить может, если с правами root запускать (в Линуксе, например). Надо багфиксы на него свежие смотреть, если это так.

i_am_not_ai
()

Там все несовместимо, это другая ОС, другая архитектура. ОС дает инструменты для работы с железом, этими инструментами являются библиотеки, которые загружены в память, к которым идет динамическая линковка. Если все сделать как в линуксе, то ты получишь линукс.

soomrack ★★★★★
()