Nano Hash - криптовалюты, майнинг, программирование

Хост-инструменты при кросс-компиляции (система сборки GNU)

Либо я сегодня плохо работаю с Google, либо это что-то нетривиальное.

У меня есть приложение, над которым я работаю для системы Windows, выполняя кросс-компиляцию из Linux, потому что (а) мне нужен C99, а бесплатные инструменты Microsoft для целевой системы его не поддерживают, и (б) я использую UNIX почти Все равно 30 лет, и это мой "дом". Переход на стек MSVC с «родной» сборкой не подходит для меня, равно как и запуск системы сборки GNU в Windows (это занимает вечно).

Проблема в том, что мне нужен единый инструмент, созданный для компилируемой системы, а не для цели; Затем мне нужно запустить этот исполняемый файл, который создаст несколько исходных файлов .c и заголовков .h, которые затем позволят проекту скомпилироваться. Я использую так называемую "систему сборки GNU" (то есть автоинструменты, включая autoconf/automake/libtool).

Любой рецепт, который я напишу, независимо от того, настроен ли я для i686-w64-mingw32 или x86_64-w64-mingw32, скомпилирует все DLL и EXE для платформы Win32/Win64.

Есть способ, с помощью которого я могу форсировать проблему, создав вручную стандартные рецепты Makefile, но я пытался найти «родной для autotools» способ компиляции и запуска исполняемых файлов времени сборки, которые не являются, например, модульные тесты, но генераторы исходного кода.

Есть какие-нибудь идеи, кроме ручного изготовления рецептов Makefile?

ETA: Кроме того, проект является кроссплатформенным: имеет смысл скомпилировать его и для Linux, поэтому любое решение должно работать так же хорошо, когда не кросс-компиляция.


  • Об этом было сообщение в списке рассылки automake (lists. gnu.org/archive/html/automake/2014-01/msg00006.html), которые могут оказаться полезными. 05.09.2014
  • Посмотрите на связанный макрос и посмотрите, поможет ли это. Спасибо! 05.09.2014
  • @RossRidge --- пожалуйста, ограничьте свои комментарии областью ваших знаний. x86_64-w64-mingw32 — это 64-разрядная цепочка инструментов, а i686-w64-mingw32 — 32-разрядная цепочка инструментов. Кроме того, я спрашиваю об инструментах сборки, а не о целевом выводе --- у меня есть целевые EXE и DLL (как 32-разрядные, так и 64-разрядные), которые работают нормально. Сейчас у меня есть файлы, которые нужно сгенерировать во время во время компиляции, а не синхронизировать их с внешним содержимым вручную. Какая часть вопроса неясна? Точная цитата: The problem is that I need to have a single tool built **for the system being compiled on** and not the target. 05.09.2014
  • Извините, что беспокою вас тогда. 05.09.2014
  • @RossRidge Не беспокойтесь. Просто пытаюсь указать, что вы не читали вопрос, и это бесполезно. Ничего личного. 05.09.2014
  • Я прочитал ваш пост, из него не ясно, что ваш единственный инструмент неправильно создается как исполняемый файл Windows. Не очевидно, что все DLL и EXE-файлы включают явно не EXE-инструмент, упомянутый в предыдущем абзаце. 05.09.2014
  • @RossRidge Пожалуйста, перечитайте первое предложение в пункте 3 и дайте мне знать, почему оно не совсем ясно --- если есть проблема, я бы хотел ее исправить. Однако я просто не вижу этого. В вопросе говорится, что я строю на Linux для Windows, а это означает, что Linux — это система, на которой компилируется, а Windows — цель, если только я сегодня действительно ужасно не владею английским языком, что действительно возможно. 05.09.2014
  • Этот абзац на самом деле не описывает проблему. Вы говорите, что вам нужно, чтобы произошло, но на самом деле это не говорит о том, что вместо этого происходит что-то другое. Только в следующем абзаце вы предполагаете, что произойдет что-то, чего вы не хотите, но это явно не связано с предыдущим абзацем. Вы никогда четко не заявляете, что один инструмент работает неправильно, а только то, что у вас есть какая-то проблема, связанная с ним. Возможно, сгенерированные файлы вызывают ошибки компиляции с целевым компилятором, или, возможно, вместо них используется компилятор сборки. 05.09.2014
  • @RossRidge Итак, что означает ... скомпилировать все библиотеки DLL и EXE для Win32/Win64 для вас? Потому что ясно, что я хочу иметь двоичные файлы ELF, а не EXE или DLL. Итак, я мог настроить ядро ​​так, чтобы оно включало binfmt_misc, и просто использовать Wine для запуска необходимых мне сборщиков, но это возможно только на рабочих станциях, где у меня есть root, и поэтому неприемлемо. Мне кажется, вы просто не в курсе, о чем я здесь спрашиваю, и поэтому не понимаете проблемы. Ничего страшного, но мы вернулись, чтобы ограничить ваши комментарии областью ваших знаний, не так ли? 06.09.2014
  • Очевидно, я не понял вашей проблемы. Это потому что ты плохо выразился. Я бы не назвал двоичный файл Linux ELF EXE, и я бы не назвал то, что я хочу, чтобы двоичный файл Linux ELF был EXE. Я интерпретировал это утверждение как говорящее, что все, что должно иметь расширение .EXE и .DLL, было скомпилировано для Win32/Win64. Когда вы решаете выделить это предложение в отдельный абзац, вы отключаетесь от предыдущего абзаца и ничего не даете, чтобы связать его обратно. 06.09.2014
  • Я не вызывал двоичный EXE-файл ELF. Для меня совершенно очевидно, что это не ваша сфера деятельности. Я очень четко различал хост и цель и, чтобы быть точным, указывал, что результатом всех рецептов в настоящее время является DLL или EXE при кросс-компиляции, несмотря на то, что мне нужен был единственный инструмент, созданный для компилируемой системы, а не для цели. Так как вам явно не хватает понимания, я вам больше не отвечаю, это ничего не дает. По крайней мере, один профессионал здесь хорошо разобрался в проблеме, и вы еще не ответили на мой вопрос, в чем я ошибся. 06.09.2014
  • Если уж на то пошло, если вы так сильно чувствуете, отметьте пост уже. Я задолбался. 06.09.2014
  • Что касается вашего, пожалуйста, ограничьте свои комментарии комментарием вашей области знаний, если бы я не отвечал на сообщения, которые не относятся к моей области знаний, у меня было бы на 4000 меньше репутации, и примерно на 100 человек здесь было бы меньше ответов. Если вам не нравятся люди, которые гадают о вашем значении, упрекают в неведении или иных предположениях в комментариях, вы попали не по адресу. Найдите где-нибудь еще, чтобы задать свои вопросы, на которые вам лень отвечать самому. 06.09.2014
  • Или слишком ленивы для поиска в Google: stackoverflow.com /вопросы/24201260/ 06.09.2014

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..