Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2012, 19:34   #1
Копоть Артём
Пользователь
 
Аватар для Копоть Артём
 
Регистрация: 12.04.2009
Сообщений: 29
Вопрос cl.exe + linux = ?

Доброго времени суток!
Сижу на Linux Ubuntu, программирую под Windows. Успешно пользовался minGW (совершенно спокойно через wine ), пока мой знакомый программист не "залажал" minGW за медленный код. Я программирую графику, и мне скорость выполнения актуальна, поэтому посмотрел в сторону компилятора cl.exe, безбожно выдранного вместе с папками bin, lib и include из Visual Studio 2008.
Что и стоило ожидать, команда
Код:
wine cl.exe zcode.cpp
(находимся в папке bin, файл zcode.cpp с простейшей программой там же) выдала следующее:

Код:
zcode.cpp(1) : fatal error C1034: iostream: no include path set
Как я понимаю, cl.exe при компиляции обращается к переменным среды INCLUDE, LIB и вроде PATH.

Вопрос: можно ли задать необходимые данные в виде параметров или прописать в отдельном файле?

P.S. На всякий случай - содержимое zcode.cpp:
Код:
#include <iostream>


using namespace std;


int main()
{
        cout << "Hello, World!\n";

        return 0;
}
Программист - это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали.
Копоть Артём вне форума Ответить с цитированием
Старый 10.08.2012, 20:59   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

Напишите
cl /?
и изучайте
waleri вне форума Ответить с цитированием
Старый 10.08.2012, 22:00   #3
Копоть Артём
Пользователь
 
Аватар для Копоть Артём
 
Регистрация: 12.04.2009
Сообщений: 29
По умолчанию

Ясно, спасибо!
Программист - это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали.
Копоть Артём вне форума Ответить с цитированием
Старый 12.08.2012, 17:03   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Если Вам актуальна скорость, то тестирование должно проводится на чистой вин-машине. А предварительное весьма желательно в виртуальной машине. Wine это все равно что тест на лабораторных мышах вместо того, чтобы тестировать в полевых условиях.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 23.08.2012, 17:10   #5
Копоть Артём
Пользователь
 
Аватар для Копоть Артём
 
Регистрация: 12.04.2009
Сообщений: 29
Смех Решение

Utkin, спасибо за совет.

А проблему я решил очень просто. Исправил
#include <iostream>
на
#include "iostream",
а все требуемые хедеры закинул в папку bin, в каждом исправив угловые скобки на ковычки. Работает!

Файлы .lib кинул туда же, подшиваю с помощью #pragma comment(lib, "libname.lib").

Грубовато, конечно, но всё работает. Сейчас пишу программку, которая будет из произвольной папки кидать .cpp к cl.exe, запускать его через wine, и полученный .exe кидать в исходную папку. Чтобы не путаться в куче файлов в папке bin .

Кстати, .exe, полученный компилятором cl.exe, действительно быстрее и даже компактнее, чем полученный minGW.
Программист - это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали.

Последний раз редактировалось Копоть Артём; 23.08.2012 в 17:12. Причина: Мелкие уточнения
Копоть Артём вне форума Ответить с цитированием
Старый 23.08.2012, 17:56   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

MinGW насколько я помню использует GCC. Сильно сомневаюсь, что у GCC код сильно хуже, чем у CL. Рекомендую поизучать аргументы командной строки у GCC - их немало. Результат вас может удивить.
waleri вне форума Ответить с цитированием
Старый 24.08.2012, 11:05   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

У GCC нет цели получить самый быстрый и компактный код. Его задача универсальность (хотя код его совсем не медленный). Поэтому не стоит сравнивать два инструмента имеющих разное предназначение.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо извлечь .exe из ресурсов .exe скомпилированного с delphi xe. bagabuga Общие вопросы Delphi 2 25.02.2012 21:10
На компе Win 7 + Linux. Как переустановить Linux? ssdm Windows 1 14.10.2011 17:54
Передача строки exe (с формой (API)) ↔ exe (форма скрыта) Alex Cones Общие вопросы Delphi 16 04.10.2009 15:26
чтение из одного exe файла, и запись в другой exe inndim Общие вопросы Delphi 2 04.02.2009 15:23
Linux на VMware....... WinXP <-> Linux DMUTPUU Операционные системы общие вопросы 1 24.09.2008 12:03