ここから本文です

linuxでのプログラミング

アバター

ID非公開さん

2017/6/1701:39:19

linuxでのプログラミング

linuxでプログラミングを始めようと思っています
今までWindowsでやっていたため、Windows向けの実行ファイルにしたいです
Windowsではvisualstudioでc言語を使っていました

補足で、質問です
linuxでWindows向けの実行ファイルは作れるのか
作るとしたらどんな手順なのか
です

肝心の本題を忘れていました
すみません

閲覧数:
80
回答数:
3

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

qui********さん

2017/6/1707:26:55

で、「質問」はなんでしょうか。

  • qui********さん

    2017/6/1707:58:39

    補足について
    コンパイラ(+ライブラリ)が対応していれば作れるはず...です。私はやったことはありませんので、「ググって下さい」ということになってしまいますが。
    開発環境と実行環境が違う開発をしばしばクロス開発とかいいます。で、そういう機能をもったコンパイラをクロスコンパイラ、コンパイルをクロスコンパイル、なんて言ったりします。gccはクロスコンパイル機能を持っていますので、
    'gcc クロスコンパイル Windows'
    あたりでぐぐってみると情報が拾えると思います。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2017/6/17 21:51:50

クロスコンパイルという単語が一番役に立ちました
ありがとうございました

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

mer********さん

2017/6/1713:17:37

簡単なものなら、JavaかC#などを使えば、バイナリレベルでどっちでも動くものができます。

kuo********さん

2017/6/1709:33:19

linuxのmingwなどのパッケージにあるクロスコンパイラを使えばWIndows用の実行ファイルがつくれる
当然のことながら、作られた実行ファイルはWindows上でしか実行できない

% cat Atom.c
/* Atom.c
Microsoft の場合 : cl Atom.c
Embarcadero の場合 : bcc32c -tW Atom.c
MinGW,Cygwin の場合 : gcc -mwindows Atom.c
Ubuntu On Windows 10,MinGW64 の場合 : x86_64-w64-mingw32-gcc -mwindows Atom.c
*/

#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")

#include <windows.h>
#include <math.h>
#include <stdio.h>
#include <tchar.h>
#define CLASSNAME "SKELETON"
#define MAINTITLE "【 軌道 】"
#define MAINMENU NULL//"MAINMENU"
#define CW_WIDTH GetSystemMetrics(SM_CXVIRTUALSCREEN)
#define CW_HIGHT GetSystemMetrics(SM_CYVIRTUALSCREEN)
#define CW_LEFT GetSystemMetrics(SM_XVIRTUALSCREEN)
#define CW_TOP GetSystemMetrics(SM_YVIRTUALSCREEN)
#define BLACK RGB(0x00,0x00,0x00)
#define BGCOLOR BLACK
#define FIXED_STAR 0x00,0xff,0xff
#define SATELLITE 0xff,0x00,0x00
#define PI 3.141592653589793
#define RADIAN (PI / 180.0)

// 光源
#define LX 1.0
#define LY -.5
#define LZ -.5

#define INTERVAL 1

RECT VW;
int VW_WIDTH,VW_HEIGHT;
double OX,OY,OR,RX,RY,QX,QY,QR;
int QK = 0,D = 0;
Wipe(HDC v)
{
HBRUSH b;
b = CreateSolidBrush(BGCOLOR);
FillRect(v,&VW,b);
DeleteObject(b);
}
Q(HDC d,double qx,double qy,double qr,double r,double g,double b)
{
double x,y,z,rr,c;
for(y= -qr;y < qr;y++) {
rr = sqrt(qr * qr - y * y);
for(x= -rr;x < rr;x++) {
z = sqrt(rr * rr - x * x);
c = (z * LX + x * LY + y * LZ) / qr;
c = (c < 0.0) ? 0.0: (c > 1.0) ? 1.0: c;
SetPixel(d,qx + x,qy + y,RGB(r * c,g * c,b * c));
}
}
}
ClearQ(HDC v,double qx,double qy,double qr)
{
HPEN p;
HBRUSH b;
p = CreatePen(PS_SOLID,1,BGCOLOR);
SelectObject(v,p);
b = CreateSolidBrush(BGCOLOR);
SelectObject(v,b);
Ellipse(v,qx - qr - 1,qy - qr - 1,qx + qr + 1,qy + qr + 1);
DeleteObject(b);
DeleteObject(p);
}
Orbit(HDC v)
{
static double d = .05;
ClearQ(v,QX,QY,QR + 1);
QX = OX + cos(RADIAN * QK) * cos(RADIAN * D) * RX - sin(RADIAN * QK) * sin(RADIAN * D) * RY;
QY = OY + sin(RADIAN * QK) * cos(RADIAN * D) * RX + cos(RADIAN * QK) * sin(RADIAN * D) * RY;
if(D == 90 || D == 270) d *= -1;
QR += d;
Q(v,QX,QY,QR,SATELLITE);
if(0 < D && D < 180) {
Q(v,OX,OY,OR,FIXED_STAR);
Q(v,QX,QY,QR,SATELLITE);
}
else {
Q(v,QX,QY,QR,SATELLITE);
Q(v,OX,OY,OR,FIXED_STAR);
}
D = ++D % 360;
if(D == 0)
QK = ++QK % 360;
}
LRESULT CALLBACK WndProc(HWND wh,UINT ms,WPARAM wp,LPARAM lp)
{
static HDC v;
static HBITMAP b;
switch(ms) {
case WM_CREATE:
{
HDC d;
GetClientRect(wh,&VW);
VW_WIDTH = VW.right - VW.left + 1;
VW_HEIGHT = VW.bottom - VW.top + 1;
d = GetDC(wh);
v = CreateCompatibleDC(d);
b = CreateCompatibleBitmap(d,VW_WIDTH,VW_HEIGHT);
SelectObject(v,b);
ReleaseDC(wh,d);
Wipe(v);
OX = VW_WIDTH / 2;
OY = VW_HEIGHT / 2;
OR = VW_HEIGHT / 6;
QR = OR / 10;
RX = VW_HEIGHT / 2 - QR;
RY = VW_HEIGHT / 8;
QX = OX + cos(RADIAN * D) * RX;
QY = OY + sin(RADIAN * D) * RY;
Q(v,OX,OY,OR,FIXED_STAR);
//SetTimer(wh,1,INTERVAL,NULL);
}
case WM_PAINT:
{
PAINTSTRUCT s;
Orbit(v);
BeginPaint(wh,&s);
BitBlt(s.hdc,0,0,VW_WIDTH,VW_HEIGHT,v,0,0,SRCCOPY);
EndPaint(wh,&s);
}
/*
break;
case WM_TIMER:
*/
InvalidateRect(wh,NULL,FALSE);
break;
case WM_DESTROY:
//KillTimer(wh,1);
DeleteObject(b);
DeleteDC(v);
PostQuitMessage(0);
break;
default:
return DefWindowProc(wh,ms,wp,lp);
}
return 0;
}
int WINAPI WinMain(HINSTANCE lih,HINSTANCE rih,LPSTR argv,int ws)
{
HWND w;
MSG m;
WNDCLASS c = {
ws,WndProc,0,0,lih,LoadIcon(NULL,IDI_APPLICATION),
LoadCursor(NULL,IDC_ARROW),CreateSolidBrush(BGCOLOR),MAINMENU,CLASSNAME
};
RegisterClass(&c);
//MessageBox(NULL,"全画面で表示します\n[Alt]+[F4]で終了して下さい",MAINTITLE,MB_ICONINFORMATION);
w = CreateWindow(CLASSNAME,MAINTITLE,WS_VISIBLE | WS_POPUP
,CW_LEFT,CW_TOP,CW_WIDTH,CW_HIGHT
,NULL,NULL,lih,NULL);
LOOP:
switch(GetMessage(&m,NULL,0,0)) {
case -1:
case 0:return m.wParam;
default:DispatchMessage(&m);break;
}
goto LOOP;
}
% x86_64-w64-mingw32-gcc -mwindows Atom.c
Atom.c:40:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
Wipe(HDC v)
^
Atom.c:47:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
Q(HDC d,double qx,double qy,double qr,double r,double g,double b)
^
Atom.c:60:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
ClearQ(HDC v,double qx,double qy,double qr)
^
Atom.c:72:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
Orbit(HDC v)
^
% ls a.*
a.exe

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる