JNI como gerar .dll, e .so no linux

Estou desenvolvendo uma aplicação em java que conversa com um sistema antigo feito em C, usando JNI,

mas estou com dificuldade para gerar uma dll no windows e um arquivo de biblioteca .so em linux, para apontar no path e fazer funcionar

alguem pode me ajudar?
como eu gero uma dll no Windows e uma biblioteca .so para os arquivos ?